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 }