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  }