From ff910ae9491d81085e25d289f61cec72e96e57ef Mon Sep 17 00:00:00 2001 From: Steve Kemp Date: Mon, 9 Mar 2015 14:41:06 +0000 Subject: Moved usage-information to foot of script. This removes the nasty self-parsing of the script to generate the help/manual output. I've also removed global-variables and made the code almost-100% warning free. --- bin/custodian-enqueue | 170 +++++++++++++++++++++----------------------------- 1 file changed, 71 insertions(+), 99 deletions(-) (limited to 'bin/custodian-enqueue') diff --git a/bin/custodian-enqueue b/bin/custodian-enqueue index e8f71f0..f815757 100755 --- a/bin/custodian-enqueue +++ b/bin/custodian-enqueue @@ -1,93 +1,41 @@ -#!/usr/bin/ruby -Ilib/ -I../lib/ -rubygems +#!/usr/bin/ruby -rubygems # -# NAME -# custodian-enqueue - Parse tests from a file and enqueue them. -# -# SYNOPSIS -# custodian-enqueue [ -h | --help ] -# [ -m | --manual] -# [ -q | --queue NAME] -# [ -f | --file FILE] -# [ -d | --dump ] -# [ | --test ] -# -# OPTIONS -# -# -h, --help Show a help message, and exit. +# Usage information at the end of the script. # -# -m, --manual Show this manual, and exit. -# -# -d, --dump Dump the parsed tests to the console; don't insert in the queue. -# -# --test Test the parsing of the given file, alert on errors. -# -# -f, --file FILE Parse the given configuration file. -# -# -# -# ABOUT -# -# This tool reads a single configuration file and parses it into a -# series of network & protocol tests. These tests are then stored in -# a queue from which workers can retrieve and execute them. -# -# The dequeing process may occur up numerous other hosts. -# -# CONFIGURATION FILE -# -# The configuration file is 99% compatible with that used in the tool -# custodian replaces. -# -# -# AUTHOR -# -# Steve Kemp -# - - -# -# Standard modules -# require 'getoptlong' - -# -# Our code. -# require 'custodian/parser' require 'custodian/queue' require 'custodian/settings' - - # # Entry-point to our code. # -if __FILE__ == $PROGRAM_NAME then +if __FILE__ == $PROGRAM_NAME - $help = false - $manual = false + help = false + manual = false begin opts = GetoptLong.new( - ['--dump', '-d', GetoptLong::NO_ARGUMENT], - ['--test', GetoptLong::NO_ARGUMENT], - ['--file', '-f', GetoptLong::REQUIRED_ARGUMENT], - ['--help', '-h', GetoptLong::NO_ARGUMENT], - ['--manual', '-m', GetoptLong::NO_ARGUMENT] + ['--dump', '-d', GetoptLong::NO_ARGUMENT], + ['--test', GetoptLong::NO_ARGUMENT], + ['--file', '-f', GetoptLong::REQUIRED_ARGUMENT], + ['--help', '-h', GetoptLong::NO_ARGUMENT], + ['--manual', '-m', GetoptLong::NO_ARGUMENT] ) opts.each do |opt, arg| case opt when '--dump' then - ENV['DUMP'] = '1' + ENV['DUMP'] = '1' when '--test' then - ENV['TEST'] = '1' - when '--file' then - ENV['FILE'] = arg + ENV['TEST'] = '1' + when '--file' then + ENV['FILE'] = arg when '--help' then - $help = true + help = true when '--manual' then - $manual = true + manual = true end end rescue StandardError => ex @@ -95,54 +43,31 @@ if __FILE__ == $PROGRAM_NAME then exit end - # - # CAUTION! Here be quality kode. + # Show the help information. # - if $manual or $help - - # Open the file, stripping the shebang line - lines = File.open(__FILE__){|fh| fh.readlines}[1..-1] - - found_synopsis = false - - lines.each do |line| - - line.chomp! - break if line.empty? - - if $help and !found_synopsis - found_synopsis = (line =~ /^#\s+SYNOPSIS\s*$/) - next - end - - puts line[2..-1].to_s - - break if $help and found_synopsis and line =~ /^#\s*$/ - + if manual || help + DATA.read.split("\n").each do |line| + puts Regexp.last_match(1).dup if line =~ /^# ?(.*)/ end - exit 0 end - # # Connected to the queue - be it redis or beanstalkd # settings = Custodian::Settings.instance queue = Custodian::QueueType.create(settings.queue_type) - if !queue + unless queue puts "Failed to connect to the #{settings.queue_type} queue" exit 1 end - # # Create the parser object. # mon = Custodian::Parser.new - # # Parse our configuration file. If there are errors then we'll # exit this script. @@ -156,10 +81,9 @@ if __FILE__ == $PROGRAM_NAME then end mon.jobs.each do |test| - - if ENV['TEST'] + if ENV['TEST'] # nop - elsif ENV['DUMP'] + elsif ENV['DUMP'] puts test else queue.add(test.to_s) @@ -167,3 +91,51 @@ if __FILE__ == $PROGRAM_NAME then end end + + +__END__ +# +# NAME +# custodian-enqueue - Parse tests from a file and enqueue them. +# +# SYNOPSIS +# custodian-enqueue [ -h | --help ] +# [ -m | --manual] +# [ -q | --queue NAME] +# [ -f | --file FILE] +# [ -d | --dump ] +# [ | --test ] +# +# OPTIONS +# +# -h, --help Show a help message, and exit. +# +# -m, --manual Show this manual, and exit. +# +# -d, --dump Dump the parsed tests to the console. +# (They are not inserted to the queue.) +# +# --test Test the parsing of the given file, alert on errors. +# +# -f, --file FILE Parse the given configuration file. +# +# +# +# ABOUT +# +# This tool reads a single configuration file and parses it into a +# series of network & protocol tests. These tests are then stored in +# a queue from which workers can retrieve and execute them. +# +# The dequeing process may occur up numerous other hosts. +# +# CONFIGURATION FILE +# +# The configuration file is 99% compatible with that used in the tool +# custodian replaces. +# +# +# AUTHOR +# +# Steve Kemp +# -- cgit v1.2.1