Class: RightDevelop::Utility::Shell
- Inherits:
-
RightGit::Shell::Default
- Object
- RightGit::Shell::Default
- RightDevelop::Utility::Shell
- Defined in:
- lib/right_develop/utility/shell.rb
Overview
extends default shell easy-singleton from right_git gem.
Defined Under Namespace
Classes: NullLoggerSingleton
Instance Method Summary collapse
-
#configure_executioner(executioner, options) ⇒ Object
Overrides ::RightGit::Shell::Default#configure_executioner.
-
#default_logger ⇒ Logger
RightSupport::Log::Mixin.default_logger.
-
#execute(cmd, options = {}) ⇒ Integer
Overrides ::RightGit::Shell::Default#execute.
-
#is_windows? ⇒ TrueClass|FalseClass
True if running on Windows platform.
-
#null_logger ⇒ Logger
Creates a null logger.
-
#setup_clean_env ⇒ Object
bundle exec sets GEM_HOME and GEM_PATH (in Windows?) and these need to be wacked in order to have a pristing rubygems environment since bundler won’t clean them.
Instance Method Details
#configure_executioner(executioner, options) ⇒ Object
Overrides ::RightGit::Shell::Default#configure_executioner
115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/right_develop/utility/shell.rb', line 115 def configure_executioner(executioner, ) # super configure early to ensure that any custom env vars are set after # restoring the pre-bundler env. executioner = super(executioner, ) # clean all bundler env vars, if requested. if [:clean_bundler_env] && defined?(::Bundler) executioner = lambda do |e| lambda { ::Bundler.with_clean_env { e.call } } end.call(executioner) end executioner end |
#default_logger ⇒ Logger
Returns RightSupport::Log::Mixin.default_logger.
79 80 81 |
# File 'lib/right_develop/utility/shell.rb', line 79 def default_logger RightSupport::Log::Mixin.default_logger end |
#execute(cmd, options = {}) ⇒ Integer
Overrides ::RightGit::Shell::Default#execute
99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/right_develop/utility/shell.rb', line 99 def execute(cmd, = {}) = { :clean_bundler_env => true, :sudo => false }.merge() if [:sudo] fail "Not available in Windows" if is_windows? cmd = "sudo #{cmd}" unless ::Process.euid == 0 end # super execute. super(cmd, ) end |
#is_windows? ⇒ TrueClass|FalseClass
Returns true if running on Windows platform.
67 68 69 |
# File 'lib/right_develop/utility/shell.rb', line 67 def is_windows? return !!(RUBY_PLATFORM =~ /mswin|win32|dos|mingw|cygwin/) end |
#null_logger ⇒ Logger
Creates a null logger.
74 75 76 |
# File 'lib/right_develop/utility/shell.rb', line 74 def null_logger NullLoggerSingleton.instance end |
#setup_clean_env ⇒ Object
bundle exec sets GEM_HOME and GEM_PATH (in Windows?) and these need to be wacked in order to have a pristing rubygems environment since bundler won’t clean them. also, if you ‘bundle exec rake …’ and then put arguments to the right of the task name, then these args won’t appear in Bundler::ORIGINAL_ENV. example: “bundle exec rake build:all DEBUG=true …”
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/right_develop/utility/shell.rb', line 49 def setup_clean_env # a little revisionist history music... ::ENV.each do |key, value| if key.start_with?('GEM_') || key.start_with?('BUNDLER_') ::Bundler::ORIGINAL_ENV[key] = nil elsif Bundler::ORIGINAL_ENV[key].nil? ::Bundler::ORIGINAL_ENV[key] = value end end ::Bundler.with_clean_env do # now the ENV is clean and not missing any right-hand args so replace # the ORIGINAL_ENV. ::Bundler::ORIGINAL_ENV.replace(ENV) end true end |