kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/go/indexer/testdata/flags.go (about)

     1  package flags
     2  
     3  import (
     4  	"flag"
     5  	"fmt"
     6  )
     7  
     8  //- vname(_, Corpus, Root, Path, _).node/kind package
     9  
    10  func CustomFlag(name string, def struct{}, description string) *struct{} { return &def }
    11  
    12  var (
    13  	//- @flagVar defines/binding FlagVar
    14  	//- FlagVar.node/kind variable
    15  	//- @"\"flag_name\"" defines/binding Flag=vname("flag flag_name", Corpus, Root, Path, _)
    16  	//- Flag.node/kind google/gflag
    17  	//- Flag named FlagName
    18  	//- FlagVar denotes Flag
    19  	flagVar = flag.String("flag_name", "default_value", "Flag description")
    20  
    21  	//- FlagDoc documents Flag
    22  	//- FlagDoc.node/kind doc
    23  	//- FlagDoc.text "Flag description"
    24  
    25  	//- @customFlag defines/binding CustomFlagVar
    26  	//- @"\"custom_flag\"" defines/binding CustomFlag=vname("flag custom_flag", Corpus, Root, Path, _)
    27  	//- CustomFlag.node/kind google/gflag
    28  	//- CustomFlagVar denotes CustomFlag
    29  	customFlag = CustomFlag("custom_flag", struct{}{}, "A custom flag desc")
    30  
    31  	//- @featureFlag defines/binding FeatureFlagVar
    32  	//- FeatureFlagVar denotes FeatureFlag
    33  	//- FeatureFlag.node/kind google/gflag
    34  	//- FeatureFlag.tag/deprecated ""
    35  	featureFlag = flag.Int("feature", 42, "DEPRECATED: don't use this")
    36  )
    37  
    38  type Options struct{ Option int }
    39  
    40  func init() {
    41  	//- @localFlag defines/binding LocalFlag
    42  	//- LocalFlag.node/kind variable
    43  	//- @"\"bool_flag\"" defines/binding BoolFlag=vname("flag bool_flag", _, _, _, _)
    44  	//- BoolFlag.node/kind google/gflag
    45  	//- LocalFlag denotes BoolFlag
    46  	localFlag := flag.Bool("bool_flag", false, "Bool flag")
    47  
    48  	//- @localVar defines/binding LocalVar
    49  	var localVar bool
    50  	//- @"\"var_flag\"" defines/binding VarFlag=vname("flag var_flag", _, _, _, _)
    51  	//- VarFlag.node/kind google/gflag
    52  	//- VarFlagDoc documents VarFlag
    53  	//- VarFlagDoc.node/kind doc
    54  	//- VarFlagDoc.text "Var flag"
    55  	//- LocalVar denotes VarFlag
    56  	flag.BoolVar(&localVar, "var_flag", true, "Var flag")
    57  
    58  	//- @"\"func_flag\"" defines/binding FuncFlag=vname("flag func_flag", _, _, _, _)
    59  	//- FuncFlag.node/kind google/gflag
    60  	//- FuncFlagDoc documents FuncFlag
    61  	//- FuncFlagDoc.node/kind doc
    62  	//- FuncFlagDoc.text "Func flag"
    63  	flag.BoolFunc("func_flag", "Func flag", func(s string) error { return nil })
    64  
    65  	opts := Options{}
    66  
    67  	//- @"\"field_flag\"" defines/binding FieldFlag
    68  	//- @Option ref OptField
    69  	//- OptField denotes FieldFlag
    70  	flag.IntVar(&opts.Option, "field_flag", 0, "Field flag")
    71  
    72  	fmt.Println(*flagVar, *localFlag) // use flag vars
    73  }
    74  
    75  func main() {
    76  	flag.Parse()
    77  
    78  	//- @"\"flag_name\"" ref FlagName=vname("flag_name", Corpus, "", "", "flag")
    79  	//- FlagName.node/kind name
    80  	f := flag.Lookup("flag_name")
    81  
    82  	//- @"\"flag_name\"" ref/writes FlagName
    83  	flag.Set("flag_name", "value")
    84  
    85  	fmt.Println(flag.Args(), f)
    86  }
    87  
    88  func configureFlags(flag *flag.FlagSet) {
    89  	//- !{ @"\"subflag\"" defines/binding _ }
    90  	flag.String("subflag", "", "Subflag")
    91  }