golang.org/x/build@v0.0.0-20240506185731-218518f32b70/maintner/maintwatch/maintwatch.go (about)

     1  // Copyright 2019 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // The maintwatch commands tails the maintner mutation log.
     6  package main
     7  
     8  import (
     9  	"context"
    10  	"flag"
    11  	"fmt"
    12  	"log"
    13  	"os"
    14  	"time"
    15  
    16  	"github.com/golang/protobuf/proto"
    17  	"golang.org/x/build/maintner"
    18  	"golang.org/x/build/maintner/godata"
    19  )
    20  
    21  var server = flag.String("server", godata.Server, "maintner server's /logs URL")
    22  
    23  func main() {
    24  	flag.Parse()
    25  
    26  	tm := proto.TextMarshaler{Compact: false}
    27  	for {
    28  		err := maintner.TailNetworkMutationSource(context.Background(), *server, func(e maintner.MutationStreamEvent) error {
    29  			if e.Err != nil {
    30  				log.Printf("# ignoring err: %v\n", e.Err)
    31  				time.Sleep(5 * time.Second)
    32  				return nil
    33  			}
    34  			fmt.Println()
    35  			tm.Marshal(os.Stdout, e.Mutation)
    36  			return nil
    37  		})
    38  		log.Printf("tail error: %v; restarting\n", err)
    39  		time.Sleep(time.Second)
    40  	}
    41  }