[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35

test branch puppet-dev at googlegroups.com
Wed Jul 14 10:33:44 UTC 2010


The following commit has been merged in the upstream branch:
commit 76304f8b09ec7d47b5ebd75efde8499a1e3ca63c
Author: Jesse Wolfe <jes5199 at gmail.com>
Date:   Fri Apr 30 14:54:07 2010 -0700

    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 at gmail.com>

diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
index b0995c2..dab1120 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@ -6,7 +6,7 @@ module Puppet
     var = nil
 
     require 'puppet/util/command_line'
-    name = Puppet::Util::CommandLine.legacy_executable_name
+    name = Puppet::Util::CommandLine.new.legacy_executable_name
 
     # Make File.expand_path happy
     require 'etc'
diff --git a/lib/puppet/reference/providers.rb b/lib/puppet/reference/providers.rb
index df02178..33d8506 100644
--- a/lib/puppet/reference/providers.rb
+++ b/lib/puppet/reference/providers.rb
@@ -8,8 +8,9 @@ providers = Puppet::Util::Reference.newreference :providers, :title => "Provider
     end
     types.sort! { |a,b| a.name.to_s <=> b.name.to_s }
 
-    unless Puppet::Util::CommandLine.args.empty?
-        types.reject! { |type| ! Puppet::Util::CommandLine.args.include?(type.name.to_s) }
+    command_line = Puppet::Util::CommandLine.new
+    unless command_line.args.empty?
+        types.reject! { |type| ! command_line.args.include?(type.name.to_s) }
     end
 
     ret = "Details about this host:\n\n"
diff --git a/lib/puppet/util/command_line.rb b/lib/puppet/util/command_line.rb
index e665698..4ab6d31 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
diff --git a/spec/unit/util/command_line.rb b/spec/unit/util/command_line.rb
index e20f51a..7413e57 100644
--- a/spec/unit/util/command_line.rb
+++ b/spec/unit/util/command_line.rb
@@ -12,102 +12,75 @@ describe Puppet::Util::CommandLine do
     end
 
     it "should pull off the first argument if it looks like a subcommand" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", %w( client --help whatever.pp ), @tty )
+        command_line = Puppet::Util::CommandLine.new("puppet", %w( client --help whatever.pp ), @tty )
 
-        command.should == "client"
-        args.should    == %w( --help whatever.pp )
+        command_line.subcommand_name.should == "client"
+        command_line.args.should            == %w( --help whatever.pp )
     end
 
     it "should use 'apply' if the first argument looks like a .pp file" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", %w( whatever.pp ), @tty )
+        command_line = Puppet::Util::CommandLine.new("puppet", %w( whatever.pp ), @tty )
 
-        command.should == "apply"
-        args.should    == %w( whatever.pp )
+        command_line.subcommand_name.should == "apply"
+        command_line.args.should            == %w( whatever.pp )
     end
 
     it "should use 'apply' if the first argument looks like a .rb file" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", %w( whatever.rb ), @tty )
+        command_line = Puppet::Util::CommandLine.new("puppet", %w( whatever.rb ), @tty )
 
-        command.should == "apply"
-        args.should    == %w( whatever.rb )
+        command_line.subcommand_name.should == "apply"
+        command_line.args.should            == %w( whatever.rb )
     end
 
     it "should use 'apply' if the first argument looks like a flag" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", %w( --debug ), @tty )
+        command_line = Puppet::Util::CommandLine.new("puppet", %w( --debug ), @tty )
 
-        command.should == "apply"
-        args.should    == %w( --debug )
+        command_line.subcommand_name.should == "apply"
+        command_line.args.should            == %w( --debug )
     end
 
     it "should use 'apply' if the first argument is -" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", %w( - ), @tty )
+        command_line = Puppet::Util::CommandLine.new("puppet", %w( - ), @tty )
 
-        command.should == "apply"
-        args.should    == %w( - )
+        command_line.subcommand_name.should == "apply"
+        command_line.args.should            == %w( - )
     end
 
     it "should return nil if the first argument is --help" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", %w( --help ), @tty )
+        command_line = Puppet::Util::CommandLine.new("puppet", %w( --help ), @tty )
 
-        command.should == nil
+        command_line.subcommand_name.should == nil
     end
 
 
     it "should return nil if there are no arguments on a tty" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", [], @tty )
+        command_line = Puppet::Util::CommandLine.new("puppet", [], @tty )
 
-        command.should == nil
-        args.should    == []
+        command_line.subcommand_name.should == nil
+        command_line.args.should            == []
     end
 
     it "should use 'apply' if there are no arguments on a pipe" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppet", [], @pipe )
+        command_line = Puppet::Util::CommandLine.new("puppet", [], @pipe )
 
-        command.should == "apply"
-        args.should    == []
-    end
-
-    it "should provide a convenience method that only returns the subcommand" do
-        Puppet::Util::CommandLine.expects(:subcommand_and_args).with("puppet", [], @pipe ).returns(["command", ['args']])
-        command = Puppet::Util::CommandLine.subcommand_name( "puppet", [], @pipe )
-        command.should == "command"
-    end
-
-    it "should provide a convenience method that only returns the args" do
-        Puppet::Util::CommandLine.expects(:subcommand_and_args).with("puppet", [], @pipe ).returns(["command", ['args']])
-        args = Puppet::Util::CommandLine.args( "puppet", [], @pipe )
-        args.should == ['args']
+        command_line.subcommand_name.should == "apply"
+        command_line.args.should            == []
     end
 
     it "should return the executable name if it is not puppet" do
-        command, args = Puppet::Util::CommandLine.subcommand_and_args("puppetmasterd", [], @tty )
+        command_line = Puppet::Util::CommandLine.new("puppetmasterd", [], @tty )
 
-        command.should == "puppetmasterd"
+        command_line.subcommand_name.should == "puppetmasterd"
     end
 
     it "should translate subcommand names into their legacy equivalent" do
-        Puppet::Util::CommandLine.legacy_executable_name("puppet", ["master"], @tty).should == "puppetmasterd"
+        command_line = Puppet::Util::CommandLine.new("puppet", ["master"], @tty)
+        command_line.legacy_executable_name.should == "puppetmasterd"
     end
 
     it "should leave legacy command names alone" do
-        Puppet::Util::CommandLine.legacy_executable_name("puppetmasterd", [], @tty).should == "puppetmasterd"
-    end
-
-    describe "when instantiated" do
-        it "should provide the results of subcommand and args" do
-            Puppet::Util::CommandLine.expects(:subcommand_and_args).with("puppet", [], @pipe).returns(["command", ['args']])
-            commandline = Puppet::Util::CommandLine.new("puppet", [], @pipe)
-
-            commandline.subcommand_name.should == 'command'
-            commandline.args.should == ['args']
-        end
-
-        it "should provide the legacy executable name" do
-            Puppet::Util::CommandLine.expects(:subcommand_and_args).with("puppet", ['master'], @pipe).returns(["master", []])
-            commandline = Puppet::Util::CommandLine.new("puppet", ['master'], @pipe)
-
-            commandline.legacy_executable_name.should == 'puppetmasterd'
-        end
+        command_line = Puppet::Util::CommandLine.new("puppetmasterd", [], @tty)
+        command_line.legacy_executable_name.should == "puppetmasterd"
     end
 
 end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list