summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util/command_line.rb
diff options
context:
space:
mode:
authorJesse Wolfe <jes5199@gmail.com>2010-04-30 14:54:07 -0700
committertest branch <puppet-dev@googlegroups.com>2010-02-17 06:50:53 -0800
commit76304f8b09ec7d47b5ebd75efde8499a1e3ca63c (patch)
tree1f1535d5a74c3d647e3cb90580a9c28dba3f254a /lib/puppet/util/command_line.rb
parente9627a060619eaf0f8eeb012979dddb047c6648e (diff)
downloadpuppet-76304f8b09ec7d47b5ebd75efde8499a1e3ca63c.tar.gz
puppet-76304f8b09ec7d47b5ebd75efde8499a1e3ca63c.tar.xz
puppet-76304f8b09ec7d47b5ebd75efde8499a1e3ca63c.zip
feature #2276 Single Executable: move CommandLine methods
move Util::CommandLine methods into instances instead of on the class, as suggested by Markus Signed-off-by: Jesse Wolfe <jes5199@gmail.com>
Diffstat (limited to 'lib/puppet/util/command_line.rb')
-rw-r--r--lib/puppet/util/command_line.rb76
1 files changed, 32 insertions, 44 deletions
diff --git a/lib/puppet/util/command_line.rb b/lib/puppet/util/command_line.rb
index e6656985f..4ab6d317c 100644
--- a/lib/puppet/util/command_line.rb
+++ b/lib/puppet/util/command_line.rb
@@ -1,16 +1,6 @@
module Puppet
module Util
class CommandLine
- def self.subcommand_name(*args)
- subcommand_name, args = subcommand_and_args(*args)
- return subcommand_name
- end
-
- def self.args(*args)
- subcommand_name, args = subcommand_and_args(*args)
- return args
- end
-
LegacyName = Hash.new{|h,k| k}.update({
'agent' => 'puppetd',
'cert' => 'puppetca',
@@ -24,57 +14,37 @@ module Puppet
'master' => 'puppetmasterd',
})
- def self.legacy_executable_name(*args)
- LegacyName[ subcommand_name(*args) ]
- end
-
- def self.subcommand_and_args( zero = $0, argv = ARGV, stdin = STDIN )
- zero = zero.gsub(/.*#{File::SEPARATOR}/,'').sub(/\.rb$/, '')
+ def initialize( zero = $0, argv = ARGV, stdin = STDIN )
+ @zero = zero
+ @argv = argv.dup
+ @stdin = stdin
- if zero == 'puppet'
- case argv.first
- when nil; [ stdin.tty? ? nil : "apply", argv] # ttys get usage info
- when "--help"; [nil, argv] # help should give you usage, not the help for `puppet apply`
- when /^-|\.pp$|\.rb$/; ["apply", argv]
- else [ argv.first, argv[1..-1] ]
- end
- else
- [ zero, argv ]
- end
+ @subcommand_name, @args = subcommand_and_args( @zero, @argv, @stdin )
end
- def self.appdir
+ attr :subcommand_name
+ attr :args
+
+ def appdir
File.join('puppet', 'application')
end
- def self.available_subcommands
- appdir = File.join('puppet', 'application')
+ def available_subcommands
absolute_appdir = $:.collect { |x| File.join(x,'puppet','application') }.detect{ |x| File.directory?(x) }
Dir[File.join(absolute_appdir, '*.rb')].map{|fn| File.basename(fn, '.rb')}
end
- def self.usage_message
+ def usage_message
usage = "Usage: puppet command <space separated arguments>"
available = "Available commands are: #{available_subcommands.sort.join(', ')}"
[usage, available].join("\n")
end
- def initialize( zero = $0, argv = ARGV, stdin = STDIN )
- @zero = zero
- @argv = argv.dup
- @stdin = stdin
-
- @subcommand_name, @args = self.class.subcommand_and_args( @zero, @argv, @stdin )
- end
-
- attr :subcommand_name
- attr :args
-
def execute
if subcommand_name.nil?
- puts self.class.usage_message
- elsif self.class.available_subcommands.include?(subcommand_name) #subcommand
- require File.join(self.class.appdir, subcommand_name)
+ puts usage_message
+ elsif available_subcommands.include?(subcommand_name) #subcommand
+ require File.join(appdir, subcommand_name)
Puppet::Application.find(subcommand_name).new(self).run
else
abort "Error: Unknown command #{subcommand_name}.\n#{usage_message}"
@@ -84,6 +54,24 @@ module Puppet
def legacy_executable_name
LegacyName[ subcommand_name ]
end
+
+ private
+
+ def subcommand_and_args( zero, argv, stdin )
+ zero = zero.gsub(/.*#{File::SEPARATOR}/,'').sub(/\.rb$/, '')
+
+ if zero == 'puppet'
+ case argv.first
+ when nil; [ stdin.tty? ? nil : "apply", argv] # ttys get usage info
+ when "--help"; [nil, argv] # help should give you usage, not the help for `puppet apply`
+ when /^-|\.pp$|\.rb$/; ["apply", argv]
+ else [ argv.first, argv[1..-1] ]
+ end
+ else
+ [ zero, argv ]
+ end
+ end
+
end
end
end