diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2019-05-07 11:46:24 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2019-05-07 12:04:32 -0700 |
commit | a8198cc042869b34937873db8f371cff77748f33 (patch) | |
tree | 67fddca3b3ddf7171c0b8133bad0ca2a88d2e05d | |
parent | 4056be318fa7aaddd46fff0f7fc15a7fd587d77b (diff) | |
download | chef-lcg/target-mode-tweaks.tar.gz |
Target mode code tweakslcg/target-mode-tweaks
The train_or_shell mixin should mixin its dependent mixins and
require them, which removes the need to do that in the calling classes.
Include TrainOrShell correctly in the Universal DSL.
Few more code tweaks ("protected" is largely worthless in ruby and was
always being misused here).
Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
-rw-r--r-- | lib/chef/dsl/universal.rb | 1 | ||||
-rw-r--r-- | lib/chef/guard_interpreter/default_guard_interpreter.rb | 7 | ||||
-rw-r--r-- | lib/chef/mixin/train_or_shell.rb | 29 |
3 files changed, 21 insertions, 16 deletions
diff --git a/lib/chef/dsl/universal.rb b/lib/chef/dsl/universal.rb index 256bc2820d..7e4843adcb 100644 --- a/lib/chef/dsl/universal.rb +++ b/lib/chef/dsl/universal.rb @@ -55,6 +55,7 @@ class Chef include Chef::Mixin::PowershellExec include Chef::Mixin::PowershellOut include Chef::Mixin::ShellOut + include Chef::Mixin::TrainOrShell extend Chef::Mixin::LazyModuleInclude end end diff --git a/lib/chef/guard_interpreter/default_guard_interpreter.rb b/lib/chef/guard_interpreter/default_guard_interpreter.rb index 402f05f288..740e8e3f2c 100644 --- a/lib/chef/guard_interpreter/default_guard_interpreter.rb +++ b/lib/chef/guard_interpreter/default_guard_interpreter.rb @@ -16,24 +16,19 @@ # limitations under the License. # -require "chef/mixin/shell_out" require "chef/mixin/train_or_shell" +require "chef/exceptions" class Chef class GuardInterpreter class DefaultGuardInterpreter - include Chef::Mixin::ShellOut include Chef::Mixin::TrainOrShell - protected - def initialize(command, opts) @command = command @command_opts = opts end - public - def evaluate result = train_or_shell(@command, default_env: false, **@command_opts) Chef::Log.debug "Command failed: #{result.stderr}" unless result.status.success? diff --git a/lib/chef/mixin/train_or_shell.rb b/lib/chef/mixin/train_or_shell.rb index c976094b14..6a47d52a1d 100644 --- a/lib/chef/mixin/train_or_shell.rb +++ b/lib/chef/mixin/train_or_shell.rb @@ -17,20 +17,16 @@ # require "ostruct" +require "chef/mixin/shell_out" +require "chef/mixin/powershell_out" +require "chef/config" class Chef module Mixin module TrainOrShell - # - # Train #run_command returns a Train::Extras::CommandResult which - # includes `exit_status` but Mixlib::Shellout returns exitstatus - # This wrapper makes the result look like Mixlib::ShellOut to make it - # easier to swap providers from #shell_out to #train_or_shell - # - def train_to_shellout_result(stdout, stderr, exit_status) - status = OpenStruct.new(success?: ( exit_status == 0 )) - OpenStruct.new(stdout: stdout, stderr: stderr, exitstatus: exit_status, status: status) - end + + include Chef::Mixin::ShellOut + include Chef::Mixin::PowershellOut def train_or_shell(*args, **opts) if Chef::Config.target_mode? @@ -69,6 +65,19 @@ class Chef powershell_out!(*args) end end + + private + + # + # Train #run_command returns a Train::Extras::CommandResult which + # includes `exit_status` but Mixlib::Shellout returns exitstatus + # This wrapper makes the result look like Mixlib::ShellOut to make it + # easier to swap providers from #shell_out to #train_or_shell + # + def train_to_shellout_result(stdout, stderr, exit_status) + status = OpenStruct.new(success?: ( exit_status == 0 )) + OpenStruct.new(stdout: stdout, stderr: stderr, exitstatus: exit_status, status: status) + end end end end |