aboutsummaryrefslogtreecommitdiff
path: root/bin/mauveconsole
diff options
context:
space:
mode:
Diffstat (limited to 'bin/mauveconsole')
-rwxr-xr-xbin/mauveconsole42
1 files changed, 30 insertions, 12 deletions
diff --git a/bin/mauveconsole b/bin/mauveconsole
index 5a16a7e..c9a4656 100755
--- a/bin/mauveconsole
+++ b/bin/mauveconsole
@@ -1,26 +1,26 @@
#!/usr/bin/ruby1.8
# NAME
-#
# mauveconsole -- Ruby console to query the mauvealert server directly
#
# SYNOPSIS
-#
-# mauveconsole [-h | --help] [<configuration file>]
+# mauveconsole [-h | --help] [-V | --version] [-m | --manual] [<configuration file>]
#
# OPTIONS
-#
-# -h, --help Show a help message
-# <configuration file> File to load the configuration from. If none is
+# -h, --help Show a help message, and exit
+#
+# -m, --manual Show this manual, and exit
+#
+# -V, --version Show the version number, and exit
+#
+# <configuration file> File from whence to load the configuration. If none is
# specified, then mauvealert.conf in the current
# directory is used, and failing that
# /etc/mauvealert/mauvealert.conf is used.
#
# SEE ALSO
-#
# irb(1), mauveserver(1), mauveclient(1)
#
# AUTHOR
-#
# Patrick J Cherry <patrick@bytemark.co.uk>
#
@@ -30,21 +30,39 @@ def error(msg)
exit 1
end
+help = ARGV.any?{|a| a =~ /-(h|-help)/}
+version = ARGV.any?{|a| a =~ /-(V|-version)/}
+manual = ARGV.any?{|a| a =~ /-(m|-manual)/}
+
# CAUTION! Kwality kode.
#
-if ARGV.any?{|a| a =~ /--?h(elp)?/}
+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!
+ line.chomp!
break if line.empty?
+
+ if help and !found_synopsis
+ found_synopsis = (line =~ /^#\s+SYNOPSIS\s*$/) if !found_synopsis
+ next
+ end
+
puts line[2..-1].to_s
- end
- exit 0
+ break if help and found_synopsis and line =~ /^#\s*$/
+ end
end
+require 'mauve/version'
+
+puts "#{$0}: version "+Mauve::VERSION if version
+
+exit 0 if help or version or manual
+
configuration_file = ARGV.shift
configuration_file = [".", "/etc/mauvealert/"].collect{|x| File.join("mauveserver.conf") }.find{|d| File.file?(d)} if configuration_file.nil?
configuration_file = File.expand_path(configuration_file)