bin/appbundle-updater in appbundle-updater-0.2.2 vs bin/appbundle-updater in appbundle-updater-0.2.3

- old
+ new

@@ -41,15 +41,45 @@ def bin_dir chefdk.join("embedded/bin") end +ENV_KEYS = %w[ + BUNDLE_BIN_PATH BUNDLE_GEMFILE GEM_HOME GEM_PATH GEM_ROOT IRBRC MY_RUBY_HOME RUBYLIB RUBYOPT RUBY_ENGINE RUBY_ROOT RUBY_VERSION _ORIGINAL_GEM_PATH PATH +].freeze + +def run(cmd) + ENV_KEYS.each { |key| ENV["_YOLO_#{key}"] = ENV[key]; ENV.delete(key) } + ENV['PATH'] = bin_dir.to_s + File::PATH_SEPARATOR + ENV['_YOLO_PATH'] + puts " running: #{cmd}" + output = `#{cmd} 2>&1` #FIXME: bash/zsh-ism, will not work on csh + unless $?.exited? && $?.exitstatus == 0 + raise("Command [#{cmd}] failed!\n\n---BEGIN OUTPUT--\n#{output}\n---END OUTPUT--\n") + end + ENV_KEYS.each { |key| ENV[key] = ENV.delete("_YOLO_#{key}") } +end + TAR_LONGLINK = '././@LongLink' +def extract_tgz(file, destination = '.') + if windows? + extract_tgz_windows(file, destination) + else + extract_tgz_unix(file, destination) + end +end + +# our windows omnibus packages all are guaranteed to have tar +def extract_tgz_windows(file, destination = '.') + Dir.chdir(app_dir) do + run("tar xf #{file} --directory #{destination}") + end +end + # pure ruby `tar xzf`, handles longlinks and directories ending in '/' # (http://stackoverflow.com/a/31310593/506908) -def extract_tgz(file, destination = '.') +def extract_tgz_unix(file, destination = '.') # NOTE: THIS IS DELIBERATELY PURE RUBY USING NO NATIVE GEMS AND ONLY # THE RUBY STDLIB BY DESIGN Gem::Package::TarReader.new( Zlib::GzipReader.open file ) do |tar| dest = nil tar.each do |entry| @@ -192,13 +222,10 @@ banner("Finished!") end private - ENV_KEYS = %w[ - BUNDLE_BIN_PATH BUNDLE_GEMFILE GEM_HOME GEM_PATH GEM_ROOT IRBRC MY_RUBY_HOME RUBYLIB RUBYOPT RUBY_ENGINE RUBY_ROOT RUBY_VERSION _ORIGINAL_GEM_PATH PATH - ].freeze def app_dir chefdk.join("embedded/apps/#{app}") end @@ -208,20 +235,9 @@ def ruby(script) ruby = bin_dir.join("ruby").to_s.tap { |p| p.concat(".exe") if windows? } run([ruby, script].join(" ")) - end - - def run(cmd) - ENV_KEYS.each { |key| ENV["_YOLO_#{key}"] = ENV[key]; ENV.delete(key) } - ENV['PATH'] = bin_dir.to_s + File::PATH_SEPARATOR + ENV['_YOLO_PATH'] - puts " running: #{cmd}" - output = `#{cmd} 2>&1` #FIXME: bash/zsh-ism, will not work on csh - unless $?.exited? && $?.exitstatus == 0 - raise("Command [#{cmd}] failed!\n\n---BEGIN OUTPUT--\n#{output}\n---END OUTPUT--\n") - end - ENV_KEYS.each { |key| ENV[key] = ENV.delete("_YOLO_#{key}") } end end class CLI