module Slugforge::Helper
Constants
- SEGMENTS
Public Class Methods
included(base)
click to toggle source
# File lib/slugforge/helper.rb, line 12 def self.included(base) base.send(:include, Slugforge::Helper::Build) base.send(:include, Slugforge::Helper::Config) base.send(:include, Slugforge::Helper::Fog) base.send(:include, Slugforge::Helper::Git) base.send(:include, Slugforge::Helper::Path) base.send(:include, Slugforge::Helper::Project) end
Protected Instance Methods
delete_option(options, option)
click to toggle source
# File lib/slugforge/helper.rb, line 128 def delete_option(options, option) result = options.dup index = result.index(option) if index result.delete_at(index) result.delete_at(index) end result end
delete_switch(options, switch)
click to toggle source
# File lib/slugforge/helper.rb, line 138 def delete_switch(options, switch) result = options.dup index = result.index(option) result.delete_at(index) if index result end
elapsed_time()
click to toggle source
# File lib/slugforge/helper.rb, line 54 def elapsed_time format_age @command_start_time end
error_class()
click to toggle source
# File lib/slugforge/helper.rb, line 50 def error_class json? ? JsonError : Thor::Error end
execute(cmd)
click to toggle source
# File lib/slugforge/helper.rb, line 71 def execute(cmd) unless pretend? if ruby_version_specified? cmd = "rvm #{options[:ruby]} do #{cmd}" elsif has_ruby_version_file? cmd = "rvm #{get_ruby_version_from_file} do #{cmd}" end # in thor, if capture is set, it uses backticks to run the command which returns a string. # Otherwise they use `system` which returns true or nil if it worked. So check the return value # and if it used backticks examine $? which keeps the result of the last command run to see # if it worked. returned = run(cmd, {:verbose => verbose?, :capture => verbose?}) if returned.is_a?(String) process_status = $? logger.say_status :run, "Command result #{process_status.to_s}. Command output: #{returned}", :green return process_status.success? end return returned end true end
force?()
click to toggle source
# File lib/slugforge/helper.rb, line 22 def force? options[:force] == true end
format_age(age)
click to toggle source
# File lib/slugforge/helper.rb, line 162 def format_age(age) age = Time.now - age segments = {} SEGMENTS.each do |segment, length| next unless age >= length segments[segment] = (age / length).floor age = age % length end # We only show Minutes or Seconds if there is no other scope if segments.empty? segments[:minute] = (age / 60).floor if age >= 60 segments[:second] = (age % 60).floor end segments.map do |seg, size| plural = 's' if size != 1 "#{size} #{seg}#{plural}" end.join(', ') end
format_size(size)
click to toggle source
# File lib/slugforge/helper.rb, line 145 def format_size(size) units = %w(B KB MB GB TB) size, unit = units.reduce(size.to_f) do |(fsize, _), utype| fsize > 512 ? [fsize / 1024, utype] : (break [fsize, utype]) end "#{size > 9 || size.modulo(1) < 0.1 ? '%d' : '%.1f'} %s" % [size, unit] end
json?()
click to toggle source
# File lib/slugforge/helper.rb, line 26 def json? options[:json] == true end
logger()
click to toggle source
# File lib/slugforge/helper.rb, line 58 def logger @logger ||= begin log_level = if quiet? :quiet elsif verbose? :verbose elsif json? :json end Slugforge::Logger.new(self.shell, log_level) end end
notifications_enabled?()
click to toggle source
# File lib/slugforge/helper.rb, line 38 def notifications_enabled? test? || !pretend? end
pretend?()
click to toggle source
# File lib/slugforge/helper.rb, line 30 def pretend? test? || options[:pretend] == true end
quiet?()
click to toggle source
# File lib/slugforge/helper.rb, line 42 def quiet? options[:quiet] == true end
test?()
click to toggle source
# File lib/slugforge/helper.rb, line 34 def test? options[:test] == true end
verbose?()
click to toggle source
# File lib/slugforge/helper.rb, line 46 def verbose? options[:verbose] == true end
with_env(env={}) { || ... }
click to toggle source
# File lib/slugforge/helper.rb, line 95 def with_env(env={}, &blk) original = ENV.to_hash ENV.replace(original.merge(env)) # Ensure rbenv isn't locked into a version if ENV['RBENV_VERSION'] ENV.delete('RBENV_VERSION') # when you use a shim provided by rbenv the $PATH is modified to point to the proper ruby version so shims are # bypassed. We need to remove those path entries to totally unset rbenv. We remove every .rbenv path _except_ # shims so it can still use the correct version defined by .ruby-version. paths = ENV['PATH'].split(':').reject do |path| path =~ /\.rbenv\/(\w+)/ && !%w(shims bin).include?($1) end ENV['PATH'] = paths * ':' end # Ensure RVM isn't locked into a version ENV.delete('RUBY_VERSION') yield ensure ENV.replace(original) end
with_gemfile(gemfile) { || ... }
click to toggle source
# File lib/slugforge/helper.rb, line 119 def with_gemfile(gemfile, &blk) with_env('BUNDLE_GEMFILE' => gemfile) do ENV.delete('GEM_HOME') ENV.delete('GEM_PATH') ENV.delete('RUBYOPT') yield end end