summaryrefslogtreecommitdiffstats
path: root/bin/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'bin/puppet')
-rwxr-xr-xbin/puppet18
1 files changed, 18 insertions, 0 deletions
diff --git a/bin/puppet b/bin/puppet
new file mode 100755
index 000000000..f22989815
--- /dev/null
+++ b/bin/puppet
@@ -0,0 +1,18 @@
+#!/usr/bin/env ruby
+
+appdir = File.join('puppet', 'application')
+absolute_appdir = $:.collect { |x| File.join(x,'puppet','application') }.detect{ |x| File.directory?(x) }
+builtins = Dir[File.join(absolute_appdir, '*.rb')].map{|fn| File.basename(fn, '.rb')}
+
+usage = "Usage: puppet command <space separated arguments>"
+available = "Available commands are: #{builtins.sort.join(', ')}"
+
+command_name = ARGV.empty? || ARGV.first[/^-/] ? nil : ARGV.shift # subcommand?
+if command_name.nil? # main
+ puts usage, available
+elsif builtins.include?(command_name) #subcommand
+ require File.join(appdir, command_name)
+ Puppet::Application[command_name].run
+else
+ abort "Error: Unknown command #{command_name}.\n#{usage}\n#{available}"
+end