lunchy 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/History.md +7 -1
  2. data/README.md +2 -1
  3. data/bin/lunchy +12 -8
  4. data/lib/lunchy.rb +6 -5
  5. metadata +12 -6
data/History.md CHANGED
@@ -1,9 +1,15 @@
1
1
  Changes
2
2
  ================
3
3
 
4
- 0.5.0
4
+ 0.6.0
5
5
  ----
6
6
 
7
+ - Fix 'regular expression too big' (jmazzi)
8
+ - Allow to force start disabled agents (koraktor)
9
+
10
+ 0.5.0
11
+ -----
12
+
7
13
  - Add default output to start and stop (joncooper)
8
14
  - Add 'edit' command to edit the matching plist file (AndreyChernyh)
9
15
  - Allow management of daemons in /System/Library/LaunchDaemons when lunchy is run as root (fhemberger)
data/README.md CHANGED
@@ -13,7 +13,8 @@ Lunchy aims to be that friendly tool by wrapping launchctl and providing a few s
13
13
  - restart [pattern]
14
14
  - status [pattern]
15
15
  - install [file]
16
-
16
+ - edit [pattern]
17
+
17
18
  where pattern is just a substring that matches the agent's plist filename. If you don't use a unique pattern, Lunchy will warn you of this and give you a list of the matching items instead.
18
19
 
19
20
  So instead of:
data/bin/lunchy CHANGED
@@ -10,6 +10,10 @@ OPERATIONS = %w(start stop restart ls list status install edit)
10
10
  option_parser = OptionParser.new do |opts|
11
11
  opts.banner = "Lunchy #{Lunchy::VERSION}, the friendly launchctl wrapper\nUsage: #{__FILE__} [#{OPERATIONS.join('|')}] [options]"
12
12
 
13
+ opts.on("-F", "--force", "Force start (disabled) agents") do |verbose|
14
+ CONFIG[:force] = true
15
+ end
16
+
13
17
  opts.on("-v", "--verbose", "Show command executions") do |verbose|
14
18
  CONFIG[:verbose] = true
15
19
  end
@@ -22,14 +26,14 @@ option_parser = OptionParser.new do |opts|
22
26
 
23
27
  Supported commands:
24
28
 
25
- ls [pattern] Show the list of installed agents, with optional [pattern] filter
26
- list [pattern] Alias for 'ls'
27
- start [-w] [pattern] Start the first agent matching [pattern]
28
- stop [-w] [pattern] Stop the first agent matching [pattern]
29
- restart [pattern] Stop and start the first agent matching [pattern]
30
- status [pattern] Show the PID and label for all agents, with optional [pattern] filter
31
- install [file] Installs [file] to ~/Library/LaunchAgents or /Library/LaunchAgents (whichever it finds first)
32
- edit [pattern] Opens the launchctl daemon file in the default editor (EDITOR environment variable)
29
+ ls [pattern] Show the list of installed agents, with optional [pattern] filter
30
+ list [pattern] Alias for 'ls'
31
+ start [-wF] [pattern] Start the first agent matching [pattern]
32
+ stop [-w] [pattern] Stop the first agent matching [pattern]
33
+ restart [pattern] Stop and start the first agent matching [pattern]
34
+ status [pattern] Show the PID and label for all agents, with optional [pattern] filter
35
+ install [file] Installs [file] to ~/Library/LaunchAgents or /Library/LaunchAgents (whichever it finds first)
36
+ edit [pattern] Opens the launchctl daemon file in the default editor (EDITOR environment variable)
33
37
 
34
38
  -w will persist the start/stop command so the agent will load on startup or never load, respectively.
35
39
 
@@ -1,10 +1,10 @@
1
1
  require 'fileutils'
2
2
 
3
3
  class Lunchy
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
 
6
6
  def start(params)
7
- raise ArgumentError, "start [-w] [name]" if params.empty?
7
+ raise ArgumentError, "start [-wF] [name]" if params.empty?
8
8
  name = params[0]
9
9
  files = plists.select {|k,v| k =~ /#{name}/i }
10
10
  files = Hash[files] if files.is_a?(Array) # ruby 1.8
@@ -13,7 +13,7 @@ class Lunchy
13
13
  elsif files.size == 0
14
14
  return puts "No daemon found matching '#{name}'" if !name
15
15
  else
16
- execute("launchctl load #{CONFIG[:write] ? '-w ' : ''}#{files.values.first.inspect}")
16
+ execute("launchctl load #{CONFIG[:force] ? '-F ' : ''}#{CONFIG[:write] ? '-w ' : ''}#{files.values.first.inspect}")
17
17
  puts "started #{files.keys.first}"
18
18
  end
19
19
  end
@@ -42,9 +42,10 @@ class Lunchy
42
42
  pattern = params[0]
43
43
  cmd = "launchctl list"
44
44
  if !verbose?
45
- agents = "(" + plists.keys.join("|") + ")"
46
- cmd << " | grep -i -E \"#{agents}\""
45
+ agents = plists.keys.map { |k| "-e \"#{k}\"" }.join(" ")
46
+ cmd << " | grep -i #{agents}"
47
47
  end
48
+ cmd.gsub!('.','\.')
48
49
  cmd << " | grep -i \"#{pattern}\"" if pattern
49
50
  execute(cmd)
50
51
  end
metadata CHANGED
@@ -1,8 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lunchy
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.5.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 6
8
+ - 0
9
+ version: 0.6.0
6
10
  platform: ruby
7
11
  authors:
8
12
  - Mike Perham
@@ -10,7 +14,7 @@ autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
16
 
13
- date: 2011-08-05 00:00:00 -07:00
17
+ date: 2012-01-25 00:00:00 -08:00
14
18
  default_executable:
15
19
  dependencies: []
16
20
 
@@ -40,21 +44,23 @@ rdoc_options: []
40
44
  require_paths:
41
45
  - lib
42
46
  required_ruby_version: !ruby/object:Gem::Requirement
43
- none: false
44
47
  requirements:
45
48
  - - ">="
46
49
  - !ruby/object:Gem::Version
50
+ segments:
51
+ - 0
47
52
  version: "0"
48
53
  required_rubygems_version: !ruby/object:Gem::Requirement
49
- none: false
50
54
  requirements:
51
55
  - - ">="
52
56
  - !ruby/object:Gem::Version
57
+ segments:
58
+ - 0
53
59
  version: "0"
54
60
  requirements: []
55
61
 
56
62
  rubyforge_project:
57
- rubygems_version: 1.5.2
63
+ rubygems_version: 1.3.6
58
64
  signing_key:
59
65
  specification_version: 3
60
66
  summary: Friendly wrapper around launchctl