github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/application/unset_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 UnsetEnv struct { 16 ui terminal.UI 17 config core_config.Reader 18 appRepo applications.ApplicationRepository 19 appReq requirements.ApplicationRequirement 20 } 21 22 func NewUnsetEnv(ui terminal.UI, config core_config.Reader, appRepo applications.ApplicationRepository) (cmd *UnsetEnv) { 23 cmd = new(UnsetEnv) 24 cmd.ui = ui 25 cmd.config = config 26 cmd.appRepo = appRepo 27 return 28 } 29 30 func (cmd *UnsetEnv) Metadata() command_metadata.CommandMetadata { 31 return command_metadata.CommandMetadata{ 32 Name: "unset-env", 33 Description: T("Remove an env variable"), 34 Usage: T("CF_NAME unset-env APP_NAME ENV_VAR_NAME"), 35 } 36 } 37 38 func (cmd *UnsetEnv) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) { 39 if len(c.Args()) != 2 { 40 cmd.ui.FailWithUsage(c) 41 } 42 43 cmd.appReq = requirementsFactory.NewApplicationRequirement(c.Args()[0]) 44 reqs = []requirements.Requirement{ 45 requirementsFactory.NewLoginRequirement(), 46 requirementsFactory.NewTargetedSpaceRequirement(), 47 cmd.appReq, 48 } 49 return 50 } 51 52 func (cmd *UnsetEnv) Run(c *cli.Context) { 53 varName := c.Args()[1] 54 app := cmd.appReq.GetApplication() 55 56 cmd.ui.Say(T("Removing env variable {{.VarName}} from app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUser}}...", 57 map[string]interface{}{ 58 "VarName": terminal.EntityNameColor(varName), 59 "AppName": terminal.EntityNameColor(app.Name), 60 "OrgName": terminal.EntityNameColor(cmd.config.OrganizationFields().Name), 61 "SpaceName": terminal.EntityNameColor(cmd.config.SpaceFields().Name), 62 "CurrentUser": terminal.EntityNameColor(cmd.config.Username())})) 63 64 envParams := app.EnvironmentVars 65 66 if _, ok := envParams[varName]; !ok { 67 cmd.ui.Ok() 68 cmd.ui.Warn(T("Env variable {{.VarName}} was not set.", map[string]interface{}{"VarName": varName})) 69 return 70 } 71 72 delete(envParams, varName) 73 74 _, apiErr := cmd.appRepo.Update(app.Guid, models.AppParams{EnvironmentVars: &envParams}) 75 if apiErr != nil { 76 cmd.ui.Failed(apiErr.Error()) 77 return 78 } 79 80 cmd.ui.Ok() 81 cmd.ui.Say(T("TIP: Use '{{.Command}}' to ensure your env variable changes take effect", 82 map[string]interface{}{"Command": terminal.CommandColor(cf.Name() + " restage")})) 83 }