Documentation ¶
Overview ¶
config package handles invocation settings for goxc, which can be set using a combination of cli flags plus json-based config files.
Index ¶
- Constants
- Variables
- func FillBuildSettingsDefaults(bs *BuildSettings)
- func FillSettingsDefaults(settings *Settings, workingDirectory string)
- func ParseCliTasksAndTaskSettings(args []string) ([]string, map[string]map[string]interface{}, error)
- func StripEmpties(rawJson []byte, verbose bool) ([]byte, error)
- func WriteJsonConfig(dir string, settings Settings, configName string, isLocal bool) error
- type BuildSettings
- type Settings
- func (settings *Settings) GetFullVersionName() string
- func (s *Settings) GetTaskSetting(taskName, settingName string) interface{}
- func (s *Settings) GetTaskSettingBool(taskName, settingName string) bool
- func (s *Settings) GetTaskSettingInt(taskName, settingName string, defaultValue int) int
- func (s *Settings) GetTaskSettingMap(taskName, settingName string) map[string]interface{}
- func (s *Settings) GetTaskSettingString(taskName, settingName string) string
- func (s *Settings) GetTaskSettingStringSlice(taskName, settingName string) []string
- func (s *Settings) IsQuiet() bool
- func (s *Settings) IsTask(taskName string) bool
- func (s *Settings) IsVerbose() bool
- func (s *Settings) MergeAliasedTaskSettings(aliases map[string][]string)
- func (s *Settings) SetTaskSetting(taskName, settingName string, value interface{})
- type Strslice
Constants ¶
const (
GOXC_CONFIG_VERSION = "0.9"
)
Variables ¶
var GOXC_CONFIG_SUPPORTED = []string{"0.5.0", "0.6", "0.8", "0.9"}
Functions ¶
func FillBuildSettingsDefaults ¶
func FillBuildSettingsDefaults(bs *BuildSettings)
func FillSettingsDefaults ¶
TODO fulfil all defaults
func ParseCliTasksAndTaskSettings ¶
func ParseCliTasksAndTaskSettings(args []string) ([]string, map[string]map[string]interface{}, error)
tasks (and task settings) are defined as args after the main flags
func StripEmpties ¶
0.6 DEPRECATED (in favour of omitempty tag)
Types ¶
type BuildSettings ¶
type BuildSettings struct { //GoRoot string `json:"-"` //Made *not* settable in settings file. Only at runtime. //GoVersion string `json:",omitempty"` //hmm. Should I encourage this? Processors *int `json:",omitempty"` Race *bool `json:",omitempty"` Verbose *bool `json:",omitempty"` PrintCommands *bool `json:",omitempty"` CcFlags *string `json:",omitempty"` Compiler *string `json:",omitempty"` GccGoFlags *string `json:",omitempty"` GcFlags *string `json:",omitempty"` InstallSuffix *string `json:",omitempty"` LdFlags *string `json:",omitempty"` LdFlagsXVars *map[string]interface{} `json:",omitempty"` Tags *string `json:",omitempty"` ExtraArgs []string `json:",omitempty"` }
func (BuildSettings) Equals ¶
func (this BuildSettings) Equals(that BuildSettings) bool
func (BuildSettings) IsEmpty ¶
func (this BuildSettings) IsEmpty() bool
type Settings ¶
type Settings struct { AppName string `json:",omitempty"` ArtifactsDest string `json:",omitempty"` //0.13.x. If this starts with a FileSeparator then ignore top dir OutPath string `json:",omitempty"` //0.2.0 Tasks replaces IsBuildToolChain bool //0.5.0 Tasks is a much longer list. Tasks []string `json:",omitempty"` //0.5.0 adding exclusions. Easier for dealing with aliases. (e.g. Tasks=[default], TasksExclude=[rmbin] is easier than specifying individual tasks) TasksExclude []string `json:",omitempty"` //0.5.0 adding extra tasks. TasksAppend []string `json:",omitempty"` //0.9.9 adding 'prepend' TasksPrepend []string `json:",omitempty"` //0.6 complement Os/Arch with BuildConstraints Arch string `json:",omitempty"` Os string `json:",omitempty"` //NEW 0.5.5 - implemented 0.5.7 BuildConstraints string `json:",omitempty"` //0.9 changed from struct to ResourcesInclude & ResourcesExclude ResourcesInclude string `json:",omitempty"` ResourcesExclude string `json:",omitempty"` //0.10.x source exclusion MainDirsExclude string `json:",omitempty"` //0.13.x source exclusion (source dirs) SourceDirsExclude string `json:",omitempty"` //versioning PackageVersion string `json:",omitempty"` BranchName string `json:",omitempty"` PrereleaseInfo string `json:",omitempty"` BuildName string `json:",omitempty"` //0.2.0 Verbosity replaces Verbose bool Verbosity string `json:",omitempty"` // none/debug/ //TaskSettings map[string]map[string]interface{} TaskSettings map[string]map[string]interface{} `json:",omitempty"` //DEPRECATED (since v0.9. See GoxcConfigVersion) FormatVersion string `json:",omitempty"` //v0.9, to replace 'FormatVersion' GoxcConfigVersion string `json:"ConfigVersion,omitempty"` BuildSettings *BuildSettings `json:",omitempty"` GoRoot string `json:"-"` //only settable by a flag //v0.10.x Env []string `json:",omitempty"` }
Invocation settings
func LoadJsonConfigOverrideable ¶
func LoadJsonConfigOverrideable(dir string, configName string, isRead, isWriteLocal, verbose bool) (Settings, error)
Loads a config file and merges results with any 'override' files. 0.8 using new inheritance rules. More flexibility, particular for people wanting different rules for different platforms 0.10.x adding parameter isWriteLocal
func LoadJsonConfigs ¶
func Merge ¶
DEPRECATED!! Merge settings together with priority. TODO: deprecate in favour of map merge.
func (*Settings) GetFullVersionName ¶
Builds version name from PackageVersion, BranchName, PrereleaseInfo, BuildName This breakdown is mainly based on 'semantic versioning' See http://semver.org/ The difference being that you can specify a branch name (which becomes part of the 'prerelease info' as named by semver)
func (*Settings) GetTaskSetting ¶
func (*Settings) GetTaskSettingBool ¶
func (*Settings) GetTaskSettingInt ¶
func (*Settings) GetTaskSettingMap ¶
func (*Settings) GetTaskSettingString ¶
func (*Settings) GetTaskSettingStringSlice ¶
func (*Settings) MergeAliasedTaskSettings ¶
this helps whenever a 'task' gets refactored to become an 'alias' (e.g. 'pkg-build' task renamed to 'deb', and 'pkg-build' became a task alias) note that the task settings take precedence over the alias' settings.