github.com/bosssauce/ponzu@v0.11.1-0.20200102001432-9bc41b703131/cmd/ponzu/version.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 10 "github.com/spf13/cobra" 11 ) 12 13 var versionCmd = &cobra.Command{ 14 Use: "version", 15 Aliases: []string{"v"}, 16 Short: "Prints the version of Ponzu your project is using.", 17 Long: `Prints the version of Ponzu your project is using. Must be called from 18 within a Ponzu project directory.`, 19 Example: `$ ponzu version 20 > Ponzu v0.8.2 21 (or) 22 $ ponzu version --cli 23 > Ponzu v0.9.2`, 24 Run: func(cmd *cobra.Command, args []string) { 25 p, err := version(cli) 26 if err != nil { 27 fmt.Println(err) 28 os.Exit(1) 29 } 30 31 fmt.Fprintf(os.Stdout, "Ponzu v%s\n", p["version"]) 32 }, 33 } 34 35 func version(isCLI bool) (map[string]interface{}, error) { 36 kv := make(map[string]interface{}) 37 38 info := filepath.Join("cmd", "ponzu", "ponzu.json") 39 if isCLI { 40 gopath, err := getGOPATH() 41 if err != nil { 42 return nil, err 43 } 44 repo := filepath.Join(gopath, "src", "github.com", "ponzu-cms", "ponzu") 45 info = filepath.Join(repo, "cmd", "ponzu", "ponzu.json") 46 } 47 48 b, err := ioutil.ReadFile(info) 49 if err != nil { 50 return nil, err 51 } 52 53 err = json.Unmarshal(b, &kv) 54 if err != nil { 55 return nil, err 56 } 57 58 return kv, nil 59 } 60 61 func init() { 62 versionCmd.Flags().BoolVar(&cli, "cli", false, "specify that information should be returned about the CLI, not project") 63 RegisterCmdlineCommand(versionCmd) 64 }