summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2019-05-07 11:46:24 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2019-05-07 12:04:32 -0700
commita8198cc042869b34937873db8f371cff77748f33 (patch)
tree67fddca3b3ddf7171c0b8133bad0ca2a88d2e05d
parent4056be318fa7aaddd46fff0f7fc15a7fd587d77b (diff)
downloadchef-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.rb1
-rw-r--r--lib/chef/guard_interpreter/default_guard_interpreter.rb7
-rw-r--r--lib/chef/mixin/train_or_shell.rb29
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