github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/application/set_env.go (about) 1 package application 2 3 import ( 4 "github.com/cloudfoundry/cli/cf" 5 "github.com/cloudfoundry/cli/cf/api/applications" 6 "github.com/cloudfoundry/cli/cf/command_metadata" 7 "github.com/cloudfoundry/cli/cf/configuration/core_config" 8 . "github.com/cloudfoundry/cli/cf/i18n" 9 "github.com/cloudfoundry/cli/cf/models" 10 "github.com/cloudfoundry/cli/cf/requirements" 11 "github.com/cloudfoundry/cli/cf/terminal" 12 "github.com/codegangsta/cli" 13 ) 14 15 type SetEnv struct { 16 ui terminal.UI 17 config core_config.Reader 18 appRepo applications.ApplicationRepository 19 appReq requirements.ApplicationRequirement 20 } 21 22 func NewSetEnv(ui terminal.UI, config core_config.Reader, appRepo applications.ApplicationRepository) *SetEnv { 23 return &SetEnv{ 24 ui: ui, 25 config: config, 26 appRepo: appRepo, 27 } 28 } 29 30 func (cmd *SetEnv) Metadata() command_metadata.CommandMetadata { 31 return command_metadata.CommandMetadata{ 32 Name: "set-env", 33 ShortName: "se", 34 Description: T("Set an env variable for an app"), 35 Usage: T("CF_NAME set-env APP_NAME ENV_VAR_NAME ENV_VAR_VALUE"), 36 SkipFlagParsing: true, 37 } 38 } 39 40 func (cmd *SetEnv) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) { 41 if len(c.Args()) != 3 { 42 cmd.ui.FailWithUsage(c) 43 } 44 45 cmd.appReq = requirementsFactory.NewApplicationRequirement(c.Args()[0]) 46 reqs = []requirements.Requirement{ 47 requirementsFactory.NewLoginRequirement(), 48 requirementsFactory.NewTargetedSpaceRequirement(), 49 cmd.appReq, 50 } 51 return 52 } 53 54 func (cmd *SetEnv) Run(c *cli.Context) { 55 varName := c.Args()[1] 56 varValue := c.Args()[2] 57 app := cmd.appReq.GetApplication() 58 59 cmd.ui.Say(T("Setting env variable '{{.VarName}}' to '{{.VarValue}}' for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", 60 map[string]interface{}{ 61 "VarName": terminal.EntityNameColor(varName), 62 "VarValue": terminal.EntityNameColor(varValue), 63 "AppName": terminal.EntityNameColor(app.Name), 64 "OrgName": terminal.EntityNameColor(cmd.config.OrganizationFields().Name), 65 "SpaceName": terminal.EntityNameColor(cmd.config.SpaceFields().Name), 66 "CurrentUser": terminal.EntityNameColor(cmd.config.Username())})) 67 68 if len(app.EnvironmentVars) == 0 { 69 app.EnvironmentVars = map[string]interface{}{} 70 } 71 envParams := app.EnvironmentVars 72 envParams[varName] = varValue 73 74 _, apiErr := cmd.appRepo.Update(app.Guid, models.AppParams{EnvironmentVars: &envParams}) 75 76 if apiErr != nil { 77 cmd.ui.Failed(apiErr.Error()) 78 return 79 } 80 81 cmd.ui.Ok() 82 cmd.ui.Say(T("TIP: Use '{{.Command}}' to ensure your env variable changes take effect", 83 map[string]interface{}{"Command": terminal.CommandColor(cf.Name() + " restage")})) 84 }