github.com/koron/hk@v0.0.0-20150303213137-b8aeaa3ab34c/env.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "log" 6 "os" 7 "sort" 8 "strings" 9 ) 10 11 var cmdEnv = &Command{ 12 Run: runEnv, 13 Usage: "env", 14 NeedsApp: true, 15 Category: "config", 16 Short: "list env vars", 17 Long: `Show all env vars.`, 18 } 19 20 func runEnv(cmd *Command, args []string) { 21 if len(args) != 0 { 22 cmd.PrintUsage() 23 os.Exit(2) 24 } 25 config, err := client.ConfigVarInfo(mustApp()) 26 must(err) 27 var configKeys []string 28 for k := range config { 29 configKeys = append(configKeys, k) 30 } 31 sort.Strings(configKeys) 32 for _, k := range configKeys { 33 fmt.Printf("%s=%s\n", k, config[k]) 34 } 35 } 36 37 var cmdGet = &Command{ 38 Run: runGet, 39 Usage: "get <name>", 40 NeedsApp: true, 41 Category: "config", 42 Short: "get env var" + extra, 43 Long: ` 44 Get the value of an env var. 45 46 Example: 47 48 $ hk get BUILDPACK_URL 49 http://github.com/kr/heroku-buildpack-inline.git 50 `, 51 } 52 53 func runGet(cmd *Command, args []string) { 54 if len(args) != 1 { 55 cmd.PrintUsage() 56 os.Exit(2) 57 } 58 config, err := client.ConfigVarInfo(mustApp()) 59 must(err) 60 value, found := config[args[0]] 61 if !found { 62 printFatal("No such key as '%s'", args[0]) 63 } 64 fmt.Println(value) 65 } 66 67 var cmdSet = &Command{ 68 Run: runSet, 69 Usage: "set <name>=<value>...", 70 NeedsApp: true, 71 Category: "config", 72 Short: "set env var", 73 Long: ` 74 Set the value of an env var. 75 76 Example: 77 78 $ hk set BUILDPACK_URL=http://github.com/kr/heroku-buildpack-inline.git 79 Set env vars and restarted myapp. 80 `, 81 } 82 83 func runSet(cmd *Command, args []string) { 84 appname := mustApp() 85 if len(args) == 0 { 86 cmd.PrintUsage() 87 os.Exit(2) 88 } 89 config := make(map[string]*string) 90 for _, arg := range args { 91 i := strings.Index(arg, "=") 92 if i < 0 { 93 printFatal("bad format: %#q. See 'hk help set'", arg) 94 } 95 val := arg[i+1:] 96 config[arg[:i]] = &val 97 } 98 _, err := client.ConfigVarUpdate(appname, config) 99 must(err) 100 log.Printf("Set env vars and restarted " + appname + ".") 101 } 102 103 var cmdUnset = &Command{ 104 Run: runUnset, 105 Usage: "unset <name>...", 106 NeedsApp: true, 107 Category: "config", 108 Short: "unset env var", 109 Long: ` 110 Unset an env var. 111 112 Example: 113 114 $ hk unset BUILDPACK_URL 115 Unset env vars and restarted myapp. 116 `, 117 } 118 119 func runUnset(cmd *Command, args []string) { 120 appname := mustApp() 121 if len(args) == 0 { 122 cmd.PrintUsage() 123 os.Exit(2) 124 } 125 config := make(map[string]*string) 126 for _, key := range args { 127 config[key] = nil 128 } 129 _, err := client.ConfigVarUpdate(appname, config) 130 must(err) 131 log.Printf("Unset env vars and restarted %s.", appname) 132 }