On Feb 9, 2009, at 4:51 PM, Nigel Kersten wrote:

>
>
> Signed-off-by: Nigel Kersten <nig...@google.com>
> ---
> lib/puppet/provider/service/launchd.rb |   19 +++++++++++++++----
> 1 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/lib/puppet/provider/service/launchd.rb b/lib/puppet/ 
> provider/service/launchd.rb
> index 891c96b..8bf3a9d 100644
> --- a/lib/puppet/provider/service/launchd.rb
> +++ b/lib/puppet/provider/service/launchd.rb
> @@ -103,12 +103,23 @@  
> Puppet::Type.type(:service).provide :launchd, :parent => :base do
>
>     def status
>         # launchctl list <jobname> exits zero if the job is loaded
> -        # and non-zero if it isn't. Simple way to check...
> +        # and non-zero if it isn't. Simple way to check... but is  
> only
> +        # available on OS X 10.5 unfortunately, so we grab the  
> whole list
> +        # and check if our resource is included. The output formats  
> differ
> +        # between 10.4 and 10.5, thus the necessity for splitting
>         begin
> -            launchctl :list, resource[:name]
> -            return :running
> +            jobs = []
> +            output = launchctl :list
> +            output.split("\n").each do |j|
> +                jobs << j.split(/\s/).last
> +            end
> +            if jobs.include?(resource[:name])
> +                return :running
> +            else
> +                return :stopped
> +            end

Not a biggie, but you could do this short-circuit instead:

   launchctl(:list).split("\n").each do |j|
     return :running if j.split(/\s/).last == resource[:name]
   end
   return :stopped

Or even:

   if launchctl(:list).split(/\n/).detect { |j| j.split(/\s/).last ==  
resource[:name] }
     return :running
   else
     return :stopped
   end

Or (the intent is maybe cleaner, although ):

   if launchtl(:list).split(/\n/).collect { |j| j.split(/ 
\s/).last }.detect { |n| n == resource[:name] }
   ...same code as above...

Probably the first is actually best, just because it splits out that  
big one-liner, but they all reduce 10 lines of code quite a bit, and  
get rid of the temporary variable.  Note that 'detect' automatically  
short-cuts, so that's helpful.

Otherwise, looks good.

>
>         rescue Puppet::ExecutionFailure
> -            return :stopped
> +            raise Puppet::Error.new("Unable to determine status of  
> #{resource[:name]}")
>         end
>     end
>
> -- 
> 1.5.3.1
>
>
> >


-- 
I have an answering machine in my car. It says, "I'm home now. But
leave a message and I'll call when I'm out. -- Stephen Wright
---------------------------------------------------------------------
Luke Kanies | http://reductivelabs.com | http://madstop.com


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

Reply via email to