launch-agent 0.6.1 → 0.7.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.
@@ -17,6 +17,16 @@ A library to use launchd easily
17
17
  == CLI
18
18
 
19
19
  $ launchagent -h
20
+ Usage:
21
+ launchagent [--env=<env>] (--daemon | --interval <sec>) [--wdir=<dir>] [--] (<argument>...)
22
+ launchagent -h | --help
23
+
24
+ Options:
25
+ -h --help Show this screen.
26
+ -e --env=<env> Additional environmental variables to be set before running the job. Can specify multiple value with comma. e.g. FOO=bar,BAR=baz
27
+ -w --wdir=<dir> Specify a directory to chdir(2) to before running the job
28
+ -d --daemon Load as daemon. If it is set, --interval option is ignored.
29
+ -i --interval=<sec> Causes the job to be started every N seconds
20
30
 
21
31
  == Note on Patches/Pull Requests
22
32
 
@@ -7,24 +7,25 @@ require 'docopt'
7
7
  program_name = File.basename($0)
8
8
  doc =<<-EOS
9
9
  Usage:
10
- #{program_name} [--env=<env>] (--daemon | --interval <sec>) [--wdir=<dir>] [--] (<argument>...)
10
+ #{program_name} [--env=<env>] (--daemon | --interval <sec>) [--wdir=<dir>] (<argument>...)
11
11
  #{program_name} -h | --help
12
12
 
13
13
  Options:
14
14
  -h --help Show this screen.
15
+ -v --version Show version information.
15
16
  -e --env=<env> Additional environmental variables to be set before running the job. Can specify multiple value with comma. e.g. FOO=bar,BAR=baz
16
17
  -w --wdir=<dir> Specify a directory to chdir(2) to before running the job
17
18
  -d --daemon Load as daemon. If it is set, --interval option is ignored.
18
19
  -i --interval=<sec> Causes the job to be started every N seconds
19
20
  EOS
20
21
 
21
- options = Docopt(doc, LaunchAgent::VERSION)
22
-
23
22
  begin
24
- agent = LaunchAgent::CLI::OptionParser.new(options, ARGV).agent
23
+ options = Docopt::docopt(doc, :version => LaunchAgent::VERSION)
24
+
25
+ agent = LaunchAgent::CLI::OptionParser.new(options, options['<argument>']).agent
25
26
  action = agent.loaded? ? :unload : :load
26
27
  agent.send(action)
27
- puts '%s "%s"' % [action, ARGV.join(' ')]
28
- rescue => e
29
- abort e.message
28
+ puts '%s "%s"' % [action, agent.args.join(' ')]
29
+ rescue Docopt::Exit => e
30
+ puts e.message
30
31
  end
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.version = LaunchAgent::VERSION
17
17
 
18
18
  gem.add_dependency('plist')
19
- gem.add_dependency('docopt')
19
+ gem.add_dependency('docopt', '0.5.0')
20
20
  gem.add_development_dependency('rspec', ['~> 2.8.0'])
21
21
  gem.add_development_dependency('rake')
22
22
  end
@@ -1,5 +1,7 @@
1
1
  module LaunchAgent
2
2
  class Base
3
+ attr_reader :args
4
+
3
5
  DOMAIN = 'com.buycheapviagraonlinenow'
4
6
  KEYS = [
5
7
  'Label',
@@ -4,15 +4,19 @@ module LaunchAgent
4
4
  def initialize(opts, argv)
5
5
  @opts = opts
6
6
  @argv = argv
7
+
8
+ if @argv[0] == '--'
9
+ @argv.shift
10
+ end
7
11
  end
8
12
 
9
13
  def agent
10
14
  raise 'full command must be supplied' if @argv.empty?
11
15
 
12
- daemon = @opts[:daemon]
13
- interval = @opts[:interval]
14
- env = (@opts[:env] || '').split(',')
15
- wdir = @opts[:wdir]
16
+ daemon = @opts['--daemon']
17
+ interval = @opts['--interval']
18
+ env = (@opts['--env'] || '').split(',')
19
+ wdir = @opts['--wdir']
16
20
  agent = nil
17
21
 
18
22
  if daemon
@@ -1,4 +1,4 @@
1
1
  module LaunchAgent
2
- VERSION = '0.6.1'
2
+ VERSION = '0.7.0'
3
3
  end
4
4
 
@@ -11,7 +11,7 @@ describe 'CLI' do
11
11
  end
12
12
 
13
13
  it 'should load/unload daemon-like agent' do
14
- command = File.expand_path(File.dirname(__FILE__) + '/../bin/launchagent --daemon --env FOO=BAR ruby foo.rb')
14
+ command = File.expand_path(File.dirname(__FILE__) + '/../bin/launchagent --daemon --env FOO=BAR -- ruby foo.rb')
15
15
 
16
16
  system(command)
17
17
 
@@ -23,7 +23,7 @@ describe CLI::OptionParser do
23
23
  describe 'empty argv' do
24
24
  let(:opts) do
25
25
  @opts.merge(
26
- :daemon => true)
26
+ '--daemon' => true)
27
27
  end
28
28
 
29
29
  it 'should raise if argv is empty' do
@@ -36,8 +36,8 @@ describe CLI::OptionParser do
36
36
  describe 'empty env' do
37
37
  let(:opts) do
38
38
  @opts.merge(
39
- :env => nil,
40
- :daemon => true)
39
+ '--env' => nil,
40
+ '--daemon' => true)
41
41
  end
42
42
 
43
43
  it_should_behave_like 'valid agent'
@@ -58,7 +58,7 @@ describe CLI::OptionParser do
58
58
  describe 'daemon' do
59
59
  let(:opts) do
60
60
  @opts.merge(
61
- :daemon => true)
61
+ '--daemon' => true)
62
62
  end
63
63
 
64
64
  it_should_behave_like 'valid agent'
@@ -77,8 +77,8 @@ describe CLI::OptionParser do
77
77
  describe 'wdir' do
78
78
  let(:opts) do
79
79
  @opts.merge(
80
- :daemon => true,
81
- :wdir => '/foo/bar')
80
+ '--daemon' => true,
81
+ '--wdir' => '/foo/bar')
82
82
  end
83
83
 
84
84
  it_should_behave_like 'valid agent'
@@ -94,8 +94,8 @@ describe CLI::OptionParser do
94
94
  describe 'env' do
95
95
  let(:opts) do
96
96
  @opts.merge(
97
- :daemon => true,
98
- :env => 'FOO=BAR,BAR=BAZ')
97
+ '--daemon' => true,
98
+ '--env' => 'FOO=BAR,BAR=BAZ')
99
99
  end
100
100
 
101
101
  it_should_behave_like 'valid agent'
@@ -111,7 +111,7 @@ describe CLI::OptionParser do
111
111
  describe 'interval' do
112
112
  let(:opts) do
113
113
  @opts.merge(
114
- :interval => "120")
114
+ '--interval' => "120")
115
115
  end
116
116
 
117
117
  it_should_behave_like 'valid agent'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launch-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-07 00:00:00.000000000 Z
12
+ date: 2012-09-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plist
@@ -32,17 +32,17 @@ dependencies:
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - '='
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 0.5.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - '='
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 0.5.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rspec
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  segments:
118
118
  - 0
119
- hash: 2863205438131634813
119
+ hash: 3228195630547528638
120
120
  required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  none: false
122
122
  requirements:
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  segments:
127
127
  - 0
128
- hash: 2863205438131634813
128
+ hash: 3228195630547528638
129
129
  requirements: []
130
130
  rubyforge_project:
131
131
  rubygems_version: 1.8.24