Module: LaunchDr

Defined in:
lib/launchdr.rb,
lib/launchdr/task.rb,
lib/launchdr/launchd.rb,
lib/launchdr/property_list.rb

Defined Under Namespace

Modules: Task Classes: Launchd, PropertyList

Constant Summary collapse

Version =
3
Options =
Hash.new

Class Method Summary collapse

Class Method Details

.allow_system_agents!Object



26
27
28
# File 'lib/launchdr.rb', line 26

def self.allow_system_agents!
  Options[:system_agents_allowed] = true
end

.allow_system_daemons!Object



30
31
32
33
# File 'lib/launchdr.rb', line 30

def self.allow_system_daemons!
  raise "You must allow System-owned agents to allow System-owned daemons!" unless Options[:system_agents_allowed]
  Options[:system_daemon_allowed] = true
end

.create(label, opts = {}) {|plist| ... } ⇒ Object

Yields:

  • (plist)


12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/launchdr.rb', line 12

def self.create label, opts = {}
  plist = Launchd.new label
  
  yield plist if block_given?
  
  raise "You must run as a root user and allow_system_agents! if you wish to preform the dangerous act of writing to #{Launchd::Paths[:system_agent]}!" unless !(opts[:type] == :system_agent) or Options[:system_agents_allowed]
  raise "You must run as a root user, allow_system_agents!, *and* allow_system_daemons! if you wish to preform the very dangerous act of writing to #{Launchd::Paths[:system_daemon]}!" unless !(opts[:type] == :system_daemon) or Options[:system_daemon_allowed]
  path = Launchd::Paths[opts[:type] || :user_agent]
  raise "Type error! Must be one of #{Launchd::Paths.keys.join(", ")}" unless path
  
  plist.dump File.expand_path(path)
  plist.load!
end