github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+incompatible/actor/pushaction/command_line_settings.go (about) 1 package pushaction 2 3 import ( 4 "fmt" 5 "path/filepath" 6 7 "github.com/liamawhite/cli-with-i18n/types" 8 "github.com/liamawhite/cli-with-i18n/util/manifest" 9 ) 10 11 type CommandLineSettings struct { 12 Buildpack types.FilteredString 13 Command types.FilteredString 14 CurrentDirectory string 15 DiskQuota uint64 16 DockerImage string 17 DockerPassword string 18 DockerUsername string 19 HealthCheckTimeout int 20 HealthCheckType string 21 Instances types.NullInt 22 Memory uint64 23 Name string 24 ProvidedAppPath string 25 StackName string 26 } 27 28 func (settings CommandLineSettings) ApplicationPath() string { 29 if settings.ProvidedAppPath != "" { 30 return settings.absoluteProvidedAppPath() 31 } 32 return settings.CurrentDirectory 33 } 34 35 func (settings CommandLineSettings) OverrideManifestSettings(app manifest.Application) manifest.Application { 36 if settings.Buildpack.IsSet { 37 app.Buildpack = settings.Buildpack 38 } 39 40 if settings.Command.IsSet { 41 app.Command = settings.Command 42 } 43 44 if settings.DiskQuota != 0 { 45 app.DiskQuota.ParseUint64Value(&settings.DiskQuota) 46 } 47 48 if settings.DockerImage != "" { 49 app.DockerImage = settings.DockerImage 50 } 51 52 if settings.DockerUsername != "" { 53 app.DockerUsername = settings.DockerUsername 54 } 55 56 if settings.DockerPassword != "" { 57 app.DockerPassword = settings.DockerPassword 58 } 59 60 if settings.HealthCheckTimeout != 0 { 61 app.HealthCheckTimeout = settings.HealthCheckTimeout 62 } 63 64 if settings.HealthCheckType != "" { 65 app.HealthCheckType = settings.HealthCheckType 66 } 67 68 if settings.Instances.IsSet { 69 app.Instances = settings.Instances 70 } 71 72 if settings.Memory != 0 { 73 app.Memory.ParseUint64Value(&settings.Memory) 74 } 75 76 if settings.Name != "" { 77 app.Name = settings.Name 78 } 79 80 if settings.ProvidedAppPath != "" { 81 app.Path = settings.absoluteProvidedAppPath() 82 } 83 if app.Path == "" { 84 app.Path = settings.CurrentDirectory 85 } 86 87 if settings.StackName != "" { 88 app.StackName = settings.StackName 89 } 90 91 return app 92 } 93 94 func (settings CommandLineSettings) String() string { 95 return fmt.Sprintf( 96 "App Name: '%s', Buildpack IsSet: %t, Buildpack: '%s', Command IsSet: %t, Command: '%s', CurrentDirectory: '%s', Disk Quota: '%d', Docker Image: '%s', Health Check Timeout: '%d', Health Check Type: '%s', Instances IsSet: %t, Instances: '%d', Memory: '%d', Provided App Path: '%s', Stack: '%s'", 97 settings.Name, 98 settings.Buildpack.IsSet, 99 settings.Buildpack.Value, 100 settings.Command.IsSet, 101 settings.Command.Value, 102 settings.CurrentDirectory, 103 settings.DiskQuota, 104 settings.DockerImage, 105 settings.HealthCheckTimeout, 106 settings.HealthCheckType, 107 settings.Instances.IsSet, 108 settings.Instances.Value, 109 settings.Memory, 110 settings.ProvidedAppPath, 111 settings.StackName, 112 ) 113 } 114 115 func (settings CommandLineSettings) absoluteProvidedAppPath() string { 116 if !filepath.IsAbs(settings.ProvidedAppPath) { 117 return filepath.Join(settings.CurrentDirectory, settings.ProvidedAppPath) 118 } 119 return settings.ProvidedAppPath 120 }