fix: converted onlyon param to only_on and added validation step

This commit is contained in:
Joel Vasallo 2018-10-19 00:46:50 -05:00
parent 25c0b98363
commit 0912adea34
3 changed files with 30 additions and 7 deletions

View File

@ -30,7 +30,7 @@ type Config struct {
InlineShebang string `mapstructure:"inline_shebang"`
// An array of multiple Runtime OSs to run on.
OnlyOn []string
OnlyOn []string `mapstructure:"only_on"`
// The file extension to use for the file generated from the inline commands
TempfileExtension string `mapstructure:"tempfile_extension"`
@ -162,6 +162,25 @@ func Validate(config *Config) error {
fmt.Errorf("Bad script '%s': %s", path, err))
}
}
// Check for properly formatted go os types
supported_syslist := []string{"darwin", "freebsd", "linux", "openbsd", "solaris", "windows"}
supported_os := false
if len(config.OnlyOn) > 0 {
for _, provided_os := range config.OnlyOn {
for _, go_os := range supported_syslist {
if provided_os == go_os {
supported_os = true
break
}
if supported_os != true {
errs = packer.MultiErrorAppend(errs,
fmt.Errorf("Invalid OS specified in only_on: '%s'", provided_os))
}
}
}
}
if config.UseLinuxPathing {
for index, script := range config.Scripts {
scriptAbsPath, err := filepath.Abs(script)

View File

@ -91,6 +91,12 @@ Optional parameters:
**Important:** If you customize this, be sure to include something like the
`-e` flag, otherwise individual steps failing won't fail the provisioner.
- `only_on` (array of strings) - This is an array of
[runtime operating systems](https://golang.org/doc/install/source#environment)
where `shell-local` will execute. This allows you to execute `shell-local`
*only* on specific operating systems. By default, shell-local will always run
if `only_on` is not set."
- `use_linux_pathing` (bool) - This is only relevant to windows hosts. If you
are running Packer in a Windows environment with the Windows Subsystem for
Linux feature enabled, and would like to invoke a bash script rather than

View File

@ -108,13 +108,11 @@ Optional parameters:
**Important:** If you customize this, be sure to include something like the
`-e` flag, otherwise individual steps failing won't fail the provisioner.
- `onlyon` (array of strings) - This is an array of
- `only_on` (array of strings) - This is an array of
[runtime operating systems](https://golang.org/doc/install/source#environment)
where `shell-local` will only run on. This allows you to run `shell-local` *only*
on specific compatible operating systems. If specified, shell-local will only
execute if runtime operating system is in the list; otherwise it will skip the
`shell-local` command. The default behavior is for `shell-local` to run if
`onlyon` is not specified.
where `shell-local` will execute. This allows you to execute `shell-local`
*only* on specific operating systems. By default, shell-local will always run
if `only_on` is not set."
- `use_linux_pathing` (bool) - This is only relevant to windows hosts. If you
are running Packer in a Windows environment with the Windows Subsystem for