github.com/attic-labs/noms@v0.0.0-20210827224422-e5fa29d95e8b/samples/go/nomdex/nomdex.go (about)

     1  // Copyright 2016 Attic Labs, Inc. All rights reserved.
     2  // Licensed under the Apache License, version 2.0:
     3  // http://www.apache.org/licenses/LICENSE-2.0
     4  
     5  package main
     6  
     7  import (
     8  	"fmt"
     9  	"os"
    10  
    11  	"github.com/attic-labs/kingpin"
    12  
    13  	"github.com/attic-labs/noms/go/d"
    14  	"github.com/attic-labs/noms/go/util/profile"
    15  	"github.com/attic-labs/noms/go/util/verbose"
    16  )
    17  
    18  func main() {
    19  	registerUpdate()
    20  	registerFind()
    21  	verbose.RegisterVerboseFlags(kingpin.CommandLine)
    22  	profile.RegisterProfileFlags(kingpin.CommandLine)
    23  
    24  	switch kingpin.Parse() {
    25  	case "up":
    26  		runUpdate()
    27  	case "find":
    28  		runFind()
    29  	}
    30  }
    31  
    32  func printError(err error, msgAndArgs ...interface{}) bool {
    33  	if err != nil {
    34  		err := d.Unwrap(err)
    35  		switch len(msgAndArgs) {
    36  		case 0:
    37  			fmt.Fprintf(os.Stderr, "error: %s\n", err)
    38  		case 1:
    39  			fmt.Fprintf(os.Stderr, "%s%s\n", msgAndArgs[0], err)
    40  		default:
    41  			format, ok := msgAndArgs[0].(string)
    42  			if ok {
    43  				s1 := fmt.Sprintf(format, msgAndArgs[1:]...)
    44  				fmt.Fprintf(os.Stderr, "%s%s\n", s1, err)
    45  			} else {
    46  				fmt.Fprintf(os.Stderr, "error: %s\n", err)
    47  			}
    48  		}
    49  	}
    50  	return err != nil
    51  }