fix: converted onlyon param to only_on and added validation step
This commit is contained in:
parent
25c0b98363
commit
0912adea34
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue