diff options
author | Martin Treusch von Buttlar <martin.tvb@vitraum.de> | 2017-05-15 22:39:14 +0200 |
---|---|---|
committer | Martin Treusch von Buttlar <martin.tvb@vitraum.de> | 2017-05-15 22:39:14 +0200 |
commit | 4c54cc43537fd15cc459030cb792f8171bcd0fd7 (patch) | |
tree | 9e81500281ea4a33685bbf77f7c5ad2bbb3636e2 /cmd/ponzu/usage.go | |
parent | 0cf8aa550a3da63cb1509678bf5add0d73925546 (diff) |
add cobra commands
Diffstat (limited to 'cmd/ponzu/usage.go')
-rw-r--r-- | cmd/ponzu/usage.go | 194 |
1 files changed, 29 insertions, 165 deletions
diff --git a/cmd/ponzu/usage.go b/cmd/ponzu/usage.go index 1f1364d..1571ad0 100644 --- a/cmd/ponzu/usage.go +++ b/cmd/ponzu/usage.go @@ -4,175 +4,34 @@ import ( "encoding/json" "fmt" "io/ioutil" + "os" "path/filepath" - "time" -) - -var year = fmt.Sprintf("%d", time.Now().Year()) - -var usageHeader = ` -$ ponzu [flags] command <params> - -Ponzu is a powerful and efficient open-source HTTP server framework and CMS. It -provides automatic, free, and secure HTTP/2 over TLS (certificates obtained via -[Let's Encrypt](https://letsencrypt.org)), a useful CMS and scaffolding to -generate set-up code, and a fast HTTP API on which to build modern applications. - -Ponzu is released under the BSD-3-Clause license (see LICENSE). -(c) 2016 - ` + year + ` Boss Sauce Creative, LLC - -COMMANDS: - -` - -var usageHelp = ` -help, h (command) - - Help command will print the usage for Ponzu, or if a command is entered, it - will show only the usage for that specific command. - - Example: - $ ponzu help generate - - -` - -var usageNew = ` -new <directory> - - Creates a 'ponzu' directory, or one by the name supplied as a parameter - immediately following the 'new' option in the $GOPATH/src directory. Note: - 'new' depends on the program 'git' and possibly a network connection. If - there is no local repository to clone from at the local machine's $GOPATH, - 'new' will attempt to clone the 'github.com/ponzu-cms/ponzu' package from - over the network. - - Example: - $ ponzu new myProject - > New ponzu project created at $GOPATH/src/myProject - - Errors will be reported, but successful commands return nothing. - - -` - -var usageGenerate = ` -generate, gen, g <generator type (,...fields)> - - Generate boilerplate code for various Ponzu components, such as 'content'. - - Example: - $ ponzu gen content review title:"string" body:"string" rating:"int" tags:"[]string" - - The command above will generate a file 'content/review.go' with boilerplate - methods, as well as struct definition, and corresponding field tags like: - - type Review struct { - Title string ` + "`json:" + `"title"` + "`" + ` - Body string ` + "`json:" + `"body"` + "`" + ` - Rating int ` + "`json:" + `"rating"` + "`" + ` - Tags []string ` + "`json:" + `"tags"` + "`" + ` - } - - The generate command will intelligently parse more sophisticated field names - such as 'field_name' and convert it to 'FieldName' and vice versa, only where - appropriate as per common Go idioms. Errors will be reported, but successful - generate commands return nothing. - - -` - -var usageBuild = ` -[-gocmd=go] build - - From within your Ponzu project directory, running build will copy and move - the necessary files from your workspace into the vendored directory, and - will build/compile the project to then be run. - - Example: - $ ponzu build - (or) - $ ponzu -gocmd=go1.8rc1 build - - By providing the 'gocmd' flag, you can specify which Go command to build the - project, if testing a different release of Go. - Errors will be reported, but successful build commands return nothing. - - -` - -var usageRun = ` -[[-port=8080] [--https|--devhttps]] run <service(,service)> - - Starts the 'ponzu' HTTP server for the JSON API, Admin System, or both. - The segments, separated by a comma, describe which services to start, either - 'admin' (Admin System / CMS backend) or 'api' (JSON API), and, optionally, - if the server should utilize TLS encryption - served over HTTPS, which is - automatically managed using Let's Encrypt (https://letsencrypt.org) - - Example: - $ ponzu run - (or) - $ ponzu -port=8080 --https run admin,api - (or) - $ ponzu run admin - (or) - $ ponzu -port=8888 run api - - Defaults to '-port=8080 run admin,api' (running Admin & API on port 8080, without TLS) - - Note: - Admin and API cannot run on separate processes unless you use a copy of the - database, since the first process to open it receives a lock. If you intend - to run the Admin and API on separate processes, you must call them with the - 'ponzu' command independently. - - -` - -var usageUpgrade = ` -upgrade - - Will backup your own custom project code (like content, addons, uploads, etc) so - we can safely re-clone Ponzu from the latest version you have or from the network - if necessary. Before running '$ ponzu upgrade', you should update the 'ponzu' - package by running '$ go get -u github.com/ponzu-cms/ponzu/...' - - Example: - $ ponzu upgrade - - -` - -var usageVersion = ` -[--cli] version, v - - Prints the version of Ponzu your project is using. Must be called from - within a Ponzu project directory. - - Example: - $ ponzu version - > Ponzu v0.7.1 - (or) - $ ponzu --cli version - > Ponzu v0.7.2 - - -` - -var usageAdd = ` -add, a <import path> - - Downloads addon from specified import path to $GOPATH/src and copys it to the - current project's ./addons directory. Must be called from within a - Ponzu project directory. - - Example: - $ ponzu add github.com/bosssauce/fbscheduler + "github.com/spf13/cobra" +) +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Prints the version of Ponzu your project is using.", + Long: `Prints the version of Ponzu your project is using. Must be called from +within a Ponzu project directory. + +Example: +$ ponzu version +> Ponzu v0.7.1 +(or) +$ ponzu --cli version +> Ponzu v0.7.2`, + Run: func(cmd *cobra.Command, args []string) { + p, err := ponzu(cli) + if err != nil { + fmt.Println(err) + os.Exit(1) + } -` + fmt.Fprintf(os.Stdout, "Ponzu v%s\n", p["version"]) + }, +} func ponzu(isCLI bool) (map[string]interface{}, error) { kv := make(map[string]interface{}) @@ -199,3 +58,8 @@ func ponzu(isCLI bool) (map[string]interface{}, error) { return kv, nil } + +func init() { + versionCmd.Flags().BoolVar(&cli, "cli", false, "specify that information should be returned about the CLI, not project") + rootCmd.AddCommand(versionCmd) +} |