github.com/Liam-Williams/i18n4go@v0.2.7-0.20201028180611-670cbaceaa6b/test_fixtures/extract_strings/f_option/input_files/app.go (about) 1 package app 2 3 var appHelpTemplate = `{{.Title "NAME:"}} 4 {{.Name}} - {{.Usage}} 5 6 {{.Title "USAGE:"}} 7 [environment variables] {{.Name}} [global options] command [arguments...] [command options] 8 9 {{.Title "VERSION:"}} 10 {{.Version}} 11 12 {{.Title "BUILD TIME:"}} 13 {{.Compiled}} 14 {{range .Commands}} 15 {{.SubTitle .Name}}{{range .CommandSubGroups}} 16 {{range .}} {{.Name}} {{.Description}} 17 {{end}}{{end}}{{end}} 18 {{.Title "ENVIRONMENT VARIABLES"}} 19 CF_COLOR=false Do not colorize output 20 CF_HOME=path/to/dir/ Override path to default config directory 21 CF_STAGING_TIMEOUT=15 Max wait time for buildpack staging, in minutes 22 CF_STARTUP_TIMEOUT=5 Max wait time for app instance startup, in minutes 23 CF_TRACE=true Print API request diagnostics to stdout 24 CF_TRACE=path/to/trace.log Append API request diagnostics to a log file 25 HTTP_PROXY=proxy.example.com:8080 Enable HTTP proxying for API requests 26 27 {{.Title "GLOBAL OPTIONS"}} 28 --version, -v Print the version 29 --help, -h Show help 30 ` 31 32 func NewApp(cmdRunner command_runner.Runner, metadatas ...command_metadata.CommandMetadata) (app *cli.App) { 33 helpCommand := cli.Command{ 34 Name: "help", 35 ShortName: "h", 36 Description: "Show help", 37 Usage: fmt.Sprintf("%s help [COMMAND]", cf.Name()), 38 Action: func(c *cli.Context) { 39 args := c.Args() 40 if len(args) > 0 { 41 cli.ShowCommandHelp(c, args[0]) 42 } else { 43 showAppHelp(appHelpTemplate, c.App) 44 } 45 }, 46 } 47 cli.HelpPrinter = showAppHelp 48 cli.AppHelpTemplate = appHelpTemplate 49 50 trace.Logger.Printf("\n%s\n%s\n\n", terminal.HeaderColor("VERSION:"), cf.Version) 51 52 app = cli.NewApp() 53 app.Usage = cf.Usage 54 app.Version = cf.Version 55 app.Action = helpCommand.Action 56 57 compiledAtTime, err := time.Parse("Jan 2, 2006 3:04PM", cf.BuiltOnDate) 58 59 if err == nil { 60 app.Compiled = compiledAtTime 61 } else { 62 err = nil 63 app.Compiled = time.Now() 64 } 65 66 app.Commands = []cli.Command{helpCommand} 67 68 for _, metadata := range metadatas { 69 app.Commands = append(app.Commands, getCommand(metadata, cmdRunner)) 70 } 71 return 72 } 73 74 func getCommand(metadata command_metadata.CommandMetadata, runner command_runner.Runner) cli.Command { 75 return cli.Command{ 76 Name: metadata.Name, 77 ShortName: metadata.ShortName, 78 Description: metadata.Description, 79 Usage: strings.Replace(metadata.Usage, "CF_NAME", cf.Name(), -1), 80 Action: func(context *cli.Context) { 81 runner.RunCmdByName(metadata.Name, context) 82 }, 83 Flags: metadata.Flags, 84 SkipFlagParsing: metadata.SkipFlagParsing, 85 } 86 }