class Dosh::Script
Public Class Methods
new(use_require = false)
click to toggle source
# File lib/script.rb, line 23 def initialize(use_require = false) @use_require = use_require end
Public Instance Methods
candidate_files(filename)
click to toggle source
# File lib/script.rb, line 27 def candidate_files(filename) fn = [filename] fn += EXPLICIT_EXTENSIONS.map { |ext| "#{filename}#{ext}"} unless has_explicit_extension?(filename) fn += fn.product(platform_prefixes).map { |file, dir| File.join(dir, file) } fn.product([@@dosh_dir, Dir.pwd]).map { |file, dir| File.join(dir, file) }.uniq end
resolve_file(filename)
click to toggle source
# File lib/script.rb, line 34 def resolve_file(filename) candidate_files(filename).detect { |file| File.exists?(file) } end
script(*args, &block)
click to toggle source
# File lib/script.rb, line 38 def script(*args, &block) if args.first == :meet command = args.first task = Meet.new task.instance_eval(&block) else filename = nil command = args.shift if @use_require || !File.exists?(command) filename = resolve_file(command) end task = @use_require ? Require.new(filename, args) : Standard.new(filename, command, args) end raise "#{command} failed" unless run_dependency(command, task, &block) rescue Exception => e raise e end
Protected Instance Methods
has_explicit_extension?(filename)
click to toggle source
# File lib/script.rb, line 60 def has_explicit_extension?(filename) !!EXPLICIT_EXTENSIONS.detect { |ext| filename.end_with?(ext) } end
run_dependency(header, task, &block)
click to toggle source
# File lib/script.rb, line 64 def run_dependency(header, task, &block) current = ENV['DOSH_INDENT'] || "" log_started(header) ENV['DOSH_INDENT'] = "#{current} " result = task.run(&block) ENV['DOSH_INDENT'] = current result ? log_success(header) : log_failure(header) result rescue Exception => e puts e.message puts e.backtrace ENV['DOSH_INDENT'] = current log_failure(header) raise e end