summaryrefslogtreecommitdiff
path: root/bin/custodian-enqueue
diff options
context:
space:
mode:
Diffstat (limited to 'bin/custodian-enqueue')
-rwxr-xr-xbin/custodian-enqueue80
1 files changed, 74 insertions, 6 deletions
diff --git a/bin/custodian-enqueue b/bin/custodian-enqueue
index e92c49b..ce147c7 100755
--- a/bin/custodian-enqueue
+++ b/bin/custodian-enqueue
@@ -1,10 +1,40 @@
#!/usr/bin/ruby1.8
#
-# Notes
+# NAME
+# custodian-enqueue - Insert sentinel-probes into a queue.
#
-# Macros may be defined either literally, or as a result of a HTTP-fetch.
-# Macro names match the pattern "^[0-9A-Z_]$"
+# SYNOPSIS
+# custodian-enqueue [ -h | --help ] [-m | --manual] [--file | -f FILE] [--dump | -d ]
#
+# OPTIONS
+#
+# -h, --help Show a help message, and exit.
+#
+# -m, --manual Show this manual, and exit.
+#
+# -d, --dump Dump the generated JSON to the console; don't insert in the queue.
+#
+# -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 serialized
+# into JSON, and stored in a beanstalkd queue.
+#
+# The intention is that the tests will be pulled from the queue and
+# executed by the companion program custodian-dequeue. 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 <steve@bytemark.co.uk>
#
@@ -447,18 +477,26 @@ end
#
if __FILE__ == $0 then
+ $help = false
+ $manual = false
begin
opts = GetoptLong.new(
- [ "--dump", "-d", GetoptLong::NO_ARGUMENT ],
- [ "--file", "-f", GetoptLong::REQUIRED_ARGUMENT ]
+ [ "--dump", "-d", 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":
ENV["DUMP"] = "1"
when "--file":
- ENV["FILE"] = arg
+ ENV["FILE"] = arge
+ when "--help":
+ $help = true
+ when "--manual":
+ $manual = true
end
end
rescue StandardError => ex
@@ -466,6 +504,36 @@ if __FILE__ == $0 then
exit
end
+
+ #
+ # CAUTION! Here be quality kode.
+ #
+ 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*$/
+
+ end
+
+ exit 0
+ end
+
mon = MonitorConfig.new( ENV['FILE'] )
mon.parse_file();
end