Yeah, that sounds reasonable. I chose a $global because it seemed analogous
to the $0 , but I was never thrilled with the idea.
Might as well move legacy_name into that class, while I'm at it.

~Jesse

On Wed, Apr 21, 2010 at 1:36 PM, Luke Kanies <[email protected]> wrote:

> I'd be far happier with Puppet::Util::ComandLine owning
> $puppet_subcommand_name.  Something like:
>
> module Puppet::Util:CommandLine
>  def self.subcommand_name
>    @subcommand_name ||= @shift_subcommand_from_argv
>  end
> end
>
> Then the defaults just relies on that:
>
> name = legacy_name[ Puppet::Util::CommandLine.subcommand_name] ||
> $0.gsub(/.+#{File::SEPARATOR}/,'').sub(/\.rb$/, '')
>
> Still effectively a global, but much more obvious, and it has the benefit
> of doing the right thing other ways.  And if you made a writer
> 'subcommand_name' people could easily override it, which is often enough
> needed.
>
>
> On Apr 21, 2010, at 11:54 AM, Jesse Wolfe wrote:
>
>  Puppet's defaults change depending on which command invokes them.
>> This patch makes sure that we use the maintain the current behavior.
>> This is a temporary fix until I implement feature #2935.
>>
>> Signed-off-by: Jesse Wolfe <[email protected]>
>> ---
>> bin/puppet             |   12 ++++++------
>> lib/puppet/defaults.rb |   15 ++++++++++++++-
>> 2 files changed, 20 insertions(+), 7 deletions(-)
>>
>> diff --git a/bin/puppet b/bin/puppet
>> index 2f497c5..bf4ee3a 100755
>> --- a/bin/puppet
>> +++ b/bin/puppet
>> @@ -8,13 +8,13 @@ usage = "Usage: puppet command <space separated
>> arguments>"
>> available = "Available commands are: #{builtins.sort.join(', ')}"
>>
>> require 'puppet/util/command_line'
>> -command_line = Puppet::Util::CommandLine.shift_subcommand_from_argv
>> +$puppet_subcommand_name =
>> Puppet::Util::CommandLine.shift_subcommand_from_argv
>>
>> -if command_name.nil?
>> +if $puppet_subcommand_name.nil?
>>    puts usage, available
>> -elsif builtins.include?(command_name) #subcommand
>> -    require File.join(appdir, command_name)
>> -    Puppet::Application[command_name].run
>> +elsif builtins.include?($puppet_subcommand_name) #subcommand
>> +    require File.join(appdir, $puppet_subcommand_name)
>> +    Puppet::Application[$puppet_subcommand_name].run
>> else
>> -    abort "Error: Unknown command
>> #{command_name}.\n#{usage}\n#{available}"
>> +    abort "Error: Unknown command
>> #{$puppet_subcommand_name}.\n#{usage}\n#{available}"
>> end
>> diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
>> index 2f397f4..b4f89cf 100644
>> --- a/lib/puppet/defaults.rb
>> +++ b/lib/puppet/defaults.rb
>> @@ -4,7 +4,20 @@ module Puppet
>>    # use basedirs that are in the user's home directory.
>>    conf = nil
>>    var = nil
>> -    name = $0.gsub(/.+#{File::SEPARATOR}/,'').sub(/\.rb$/, '')
>> +
>> +    legacy_name = Hash.new{ |h,k| k }.update({
>> +        'agent'      => 'puppetd',
>> +        'cert'       => 'puppetca',
>> +        'doc'        => 'puppetdoc',
>> +        'filebucket' => 'filebucket',
>> +        'apply'      => 'puppet',
>> +        'describe'   => 'pi',
>> +        'queue'      => 'puppetqd',
>> +        'resource'   => 'ralsh',
>> +        'kick'       => 'puppetrun',
>> +        'master'     => 'puppetmasterd',
>> +    })
>> +    name = legacy_name[ $puppet_subcommand_name ] ||
>> $0.gsub(/.+#{File::SEPARATOR}/,'').sub(/\.rb$/, '')
>>
>>    # Make File.expand_path happy
>>    require 'etc'
>> --
>> 1.6.3.3
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Puppet Developers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<puppet-dev%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/puppet-dev?hl=en.
>>
>>
>
> --
> A classic is something that everybody wants to have read and nobody
> wants to read. -- Mark Twain
> ---------------------------------------------------------------------
> Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<puppet-dev%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/puppet-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to