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  }