bin/launchagent in launch-agent-0.3.0 vs bin/launchagent in launch-agent-0.4.0
- old
+ new
@@ -3,6 +3,45 @@
require 'launch_agent'
require 'git-style-binary/command'
GitStyleBinary.primary do
version "launch-agent #{LaunchAgent::VERSION}"
+
+ short_desc "load/unload a launchd agent"
+ banner <<-EOS
+Usage: #{command.full_name} #{all_options_string} {full command}
+
+Load/Unload a launchd agent
+
+EOS
+ opt :env, "additional environmental variables to be set before running the job. can specify multiple times. e.g. RAILS_ENV=development", :type => String, :multi => true
+ opt :daemon, "load as daemon. if it is set, --interval option is ignored", :default => false
+ opt :interval, "causes the job to be started every N seconds", :type => Integer
+
+ run do |command|
+ abort 'full command must be supplised' if command.argv.empty?
+
+ daemon = command.opts[:daemon]
+ integer = command.opts[:interval]
+ env = command.opts[:env]
+ agent = nil
+
+ if daemon
+ agent = LaunchAgent::Daemon.new(*command.argv)
+ elsif command.opts.interval
+ agent = LaunchAgent::Daemon.new(interval, *command.argv)
+ else
+ abort 'at least one of --daemon and --interval must be set'
+ end
+
+ agent['EnvironmentVariables'] = env.inject({}) do |memo, e|
+ k, v = e.split('=')
+ memo[k] = v
+ memo
+ end
+
+ action = agent.loaded? ? :unload : :load
+ agent.send(action)
+
+ puts '%s "%s"' % [action, command.argv.join(' ')]
+ end
end