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 -~----------~----~----~----~------~----~------~--~---