class FPM::Scriptable::App
Public Class Methods
run(args={:help => ''})
click to toggle source
# File lib/fpm/scriptable/app.rb, line 19 def self.run(args={:help => ''}) @log = FPM::Scriptable::Log.instance @log.clobber @log.color = false if args[:nocolor] @log.quiet = true if args[:quiet] && ( !args[:help] && !args[:h] ) @log.quiet = true if args[:q] && ( !args[:help] && !args[:h] ) level = FPM::Scriptable::Constants.instance.log_level level = args[:log_level] if args[:log_level] if !args[:logfile].nil? @log.add(level.to_sym, false, args[:logfile]) end if !@log.quiet @log.add(level.to_sym, @log.color, STDOUT) end @log.show FPM::Scriptable::Util.banner unless args[:nobanner] if args[:help] || args[:h] @log.show FPM::Scriptable::Util.usage, false return 1 end cfg = FPM::Scriptable::Config.instance @config = cfg.config @config.working_dir = Dir.getwd script = args[:script] if script.nil? @log.fatal 'FPM::Scriptable::App - No script file was specified' @log.show FPM::Scriptable::Util.usage else if script !~ /^\// script = "#{@config.working_dir}/#{script}" end @log.debug "FPM::Scriptable::App - Script file path set to: #{script}" if File.file? script if File.readable? script @script_lines = nil begin @log.debug 'FPM::Scriptable::App - Reading script file' s_lines = nil File.open(script) do |f| s_lines = f.readlines end @script_lines = s_lines.join rescue Exception => e @log.error "FPM::Scriptable::App - #{e}" end if @script_lines.nil? @log.error "FPM::Scriptable::App - Unable to read script file: #{script}" else @log.debug 'FPM::Scriptable::App - Staring new thread to execute script' begin Thread.start { eval(@script_lines) }.join rescue Exception => e @log.error "FPM::Scriptable::App - #{e}" end end else @log.error "FPM::Scriptable::App - Unable to read script file: #{script}" end else @log.error "FPM::Scriptable::App - Unable to locate script file: #{script}" end end return 1 if @log.has_error return 0 end