elia/timetap

View on GitHub
lib/time_tap/tasks.rb

Summary

Maintainability
A
0 mins
Test Coverage
namespace :timetap do

  plist_name  = "com.eliaesocietas.TimeTap.plist"
  home        = File.expand_path("~")
  ruby        = ENV['TAP_RUBY'] || "#{home}/.rvm/bin/ruby-1.9.2-p0@global"
  plist_path  = File.expand_path("#{home}/Library/LaunchAgents/#{plist_name}")
  launcher    = File.expand_path('../../../bin/timetap', __FILE__)
  include_dir = '-I'+File.expand_path('../../../lib', __FILE__)
  
  desc "Add a plist for OSX's launchd and have *TimeTap* launched automatically at login."
  task :launcher do
    puts "\nCreating launchd plist in\n  #{plist_path}"
  
    File.open(plist_path, 'w') do |file|
      file << <<-PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.eliaesocietas.TimeTap</string>

    <key>Program</key>
    <string>#{ruby}</string>

    <key>ProgramArguments</key>
    <array>
        <string>#{ruby}</string>
        <string>#{include_dir}</string>
        <string>#{launcher}</string>
        <string>-f</string>
    </array>

    <key>OnDemand</key>
    <false/>

    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
      PLIST
      
      puts "\nCreated. Now run:\n  launchctl load ~/Library/LaunchAgents\n\n"
    end
  end

  desc "Restarts the daemon."
  task :restart do
    command = "launchctl unload #{plist_path}; launchctl load #{plist_path}"
    puts command
    exec command
  end

  desc "Stops the daemon."
  task :stop do
    command = "launchctl unload #{plist_path}"
    puts command
    exec command
  end

  desc "Starts the daemon."
  task :start do
    command = "launchctl load #{plist_path}"
    puts command
    exec command
  end
  
end