bin/scout in scout-1.1.8 vs bin/scout in scout-2.0.4
- old
+ new
@@ -3,206 +3,7 @@
$VERBOSE = true # -w
$KCODE = "u" # -Ku
$LOAD_PATH << File.join(File.dirname(__FILE__), *%w[.. lib])
require "scout"
-require "optparse"
-require "logger"
-require "fileutils"
-require "pp"
-CONFIG_DIR = File.join((File.expand_path("~") rescue "/"), ".scout")
-USER = ENV["USER"] || ENV["USERNAME"] || "root"
-
-options = { :server => "https://scoutapp.com/",
- :history => File.join(CONFIG_DIR , "client_history.yaml"),
- :verbose => false,
- :level => "info" }
-
-ARGV.options do |opts|
- opts.banner = "Usage: #{File.basename($PROGRAM_NAME)} [OPTIONS] CLIENT_KEY"
-
- opts.separator ""
- opts.separator "CLIENT_KEY is the indentification key assigned to this " +
- "client by the server."
- opts.separator ""
- opts.separator "Note: This client is meant to be installed and invoked " +
- "through cron or any other scheduler."
- opts.separator ""
- opts.separator "Specific Options:"
-
- opts.on( "-s", "--server SERVER", String,
- "The URL for the server this client reports to." ) do |url|
- options[:server] = url
- end
- opts.on( "-p", "--plugin PLUGIN", String,
- "The path to a plugin to run locally. " +
- "Useful for Testing." ) do |plugin|
- options[:plugin] = plugin
- end
-
- opts.separator ""
-
- opts.on( "-d", "--data DATA", String,
- "The data file used to track the history of executions." ) do |file|
- options[:history] = file
- end
- opts.on( "-l", "--level LEVEL", Logger::SEV_LABEL.map { |l| l.downcase },
- "The level of logging to report." ) do |level|
- options[:level] = level
- end
- opts.on( "-o", "--plugin-options PLUGIN_OPTIONS", String,
- "The options YAML file to pass to the plugin." ) do |plugin_options|
- options[:plugin_options] = plugin_options
- end
-
- opts.separator "Common Options:"
-
- opts.on( "-h", "--help",
- "Show this message." ) do
- puts opts
- exit
- end
- opts.on( "-v", "--[no-]verbose",
- "Turn on logging to STDOUT" ) do |bool|
- options[:verbose] = bool
- end
-
- begin
- opts.parse!
- options[:client_key] = ARGV.shift if ARGV.size == 1
- rescue
- puts opts
- exit
- end
-end
-
-log = Logger.new($stdout)
-log.datetime_format = "%Y-%m-%d %H:%M:%S "
-log.level = Logger.const_get(options[:level].upcase) \
- rescue Logger::INFO
-
-real_config_dir = File.dirname(options[:history])
-FileUtils.mkdir_p(real_config_dir) # ensure dir exists
-
-# make sure only one copy is ever running at a time
-pid_file = File.join(real_config_dir, "scout_client_pid.txt")
-begin
- File.open(pid_file, File::CREAT|File::EXCL|File::WRONLY) { |pid| pid.puts $$ }
- at_exit do
- begin
- File.unlink(pid_file)
- rescue
- log.error "Unable to unlink pid file: #{$!.message}"
- end
- end
-rescue
- pid = File.read(pid_file).strip.to_i rescue "unknown"
- running = true
- begin
- Process.kill(0, pid)
- rescue Errno::ESRCH
- running = false
- rescue
- # do nothing, we didn't have permission to the running process
- end
- if running
- log.warn "Process #{pid} was already running"
- exit
- else
- log.info "Stale PID file found. Clearing it and reloading..."
- File.unlink(pid_file)
- retry
- end
-end
-
-if [:client_key, :plugin].all? { |o| options[o].nil? } and
- $stdin.tty? # install wizard
- puts <<-END_INTRO.gsub(/^ {2}/, "")
- == Scout Installation Wizard ==
-
- You need the Client Key displayed in the Client Settings
- tab. It looks like:
-
- 6ecad322-0d17-4cb8-9b2c-a12c4541853f
-
- Enter the Client Key:
- END_INTRO
- options[:client_key] = gets.to_s.strip
-
- # puts "Attempting to contact the server..."
- begin
- Scout::Server.new( options[:server],
- options[:client_key],
- options[:history],
- options[:verbose] ? log : nil ) { |server| server.test }
-
- puts <<-END_SUCCESS.gsub(/^ {4}/, "")
-
- Success!
-
- Now, you must setup Scout to run on a scheduled basis.
-
- If you are using the system crontab (usually located at /etc/crontab):
-
- ****** START CRONTAB SAMPLE ******
- */30 * * * * #{USER} #{File.expand_path($PROGRAM_NAME)} #{options[:client_key]}
- ******* END CRONTAB SAMPLE *******
-
- If you are using this current user's crontab (using crontab -e to edit):
-
- ****** START CRONTAB SAMPLE ******
- */30 * * * * #{File.expand_path($PROGRAM_NAME)} #{options[:client_key]}
- ******* END CRONTAB SAMPLE *******
-
- For help setting up Scout with crontab, please visit:
-
- http://scoutapp.com/help#cron
-
- END_SUCCESS
- rescue SystemExit
- puts <<-END_ERROR.gsub(/^ {4}/, "")
-
- Could not contact server. The client key may be incorrect. For more help,
- please visit:
-
- http://scoutapp.com/help
-
- END_ERROR
- end
-elsif options[:plugin] # local plugin
- # read the plugin_code from the file specified
- plugin_code = File.read(options[:plugin])
-
- plugin_options = if options[:plugin_options].to_s[0..0] == "{"
- eval(options[:plugin_options]) # options from command-line
- elsif options[:plugin_options]
- #
- # read the plugin_options from the YAML file specified,
- # parse each option and use the default value specified
- # in the options as the value to be passed to the test plugin
- #
- Hash[ *File.open(options[:plugin_options]) { |f| YAML.load(f) }["options"].
- map { |name, details| [name, details["default"]] }.flatten ]
- else
- Hash.new
- end
-
- Scout::Server.new( nil,
- options[:client_key],
- options[:history],
- options[:verbose] ? log : nil ) do |server|
- pp server.process_plugin( { :interval => 0,
- :plugin_id => 1,
- :name => "Local Plugin",
- :code => plugin_code,
- :options => plugin_options,
- :path => options[:plugin] } )
- end
-else # normal run
- Scout::Server.new( options[:server],
- options[:client_key],
- options[:history],
- options[:verbose] ? log : nil ) do |server|
- server.run_plugins_by_plan
- end
-end
+Scout::Command.dispatch(ARGV)