summaryrefslogtreecommitdiffstats
path: root/sbin/puppet
blob: f2298981538e6e03dfe1ff857b67c96c39b89bb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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