github.com/jbendotnet/noms@v0.0.0-20190904222105-c43e4293ea92/go/util/verbose/verbose.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 verbose
     6  
     7  import (
     8  	"log"
     9  
    10  	"github.com/attic-labs/kingpin"
    11  )
    12  
    13  var (
    14  	verbose bool
    15  	quiet   bool
    16  )
    17  
    18  // RegisterVerboseFlags registers -v|--verbose flags for general usage
    19  func RegisterVerboseFlags(app *kingpin.Application) {
    20  	// Must reset globals because under test this can get called multiple times.
    21  	verbose = false
    22  	quiet = false
    23  	app.Flag("verbose", "show more").Short('v').BoolVar(&verbose)
    24  	app.Flag("quite", "show less").Short('q').BoolVar(&quiet)
    25  }
    26  
    27  // Verbose returns True if the verbose flag was set
    28  func Verbose() bool {
    29  	return verbose
    30  }
    31  
    32  func SetVerbose(v bool) {
    33  	verbose = v
    34  }
    35  
    36  // Quiet returns True if the verbose flag was set
    37  func Quiet() bool {
    38  	return quiet
    39  }
    40  
    41  func SetQuiet(q bool) {
    42  	quiet = q
    43  }
    44  
    45  // Log calls Printf(format, args...) iff Verbose() returns true.
    46  func Log(format string, args ...interface{}) {
    47  	if Verbose() {
    48  		if len(args) > 0 {
    49  			log.Printf(format+"\n", args...)
    50  		} else {
    51  			log.Println(format)
    52  		}
    53  	}
    54  }