ShogunPanda/pincerna

View on GitHub
bin/pincernad

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby
# encoding: utf-8
#
# This file is part of the pincerna gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
# Licensed under the MIT license, which can be found at https://choosealicense.com/licenses/mit.
#

require "pincerna"

helper = "#{ENV["HOME"]}/.rvm/bin/pincernad"
agent = "#{ENV["HOME"]}/Library/LaunchAgents/it.cowtech.pincernad.plist"
local_agent = Pincerna::Base::ROOT + "/it.cowtech.pincernad.plist"
workflow = Pincerna::Base::ROOT + "/pincerna.alfredworkflow"

def perform_commands(commands)
  commands.each do |cmd|
    puts("Running: #{cmd}")
    system(cmd)
  end

  puts "\n"
end

case ARGV[0]
  when "install" then
    perform_commands([
      "rvm wrapper $(rvm-prompt i v g) --no-prefix pincernad",
      "cp \"#{local_agent}\" \"#{agent}\"",
      "launchctl load \"#{agent}\"",
      "open \"#{workflow}\""
    ])

    puts "Installation of Pincerna into Alfred completed! Have fun! :)"
  when "uninstall" then
    perform_commands([
      "launchctl unload \"#{agent}\"",
      "rm -rf \"#{agent}\" \"#{helper}\"",
    ])

    puts "Installation of Pincerna from the system completed! :("
    puts "Remember to remove the workflow from Alfred's settings."
    puts "Hope you enjoyed it!"
  when "quit"
    system("curl -s http://localhost:#{13000 + Process.uid}/quit")
  else
    require "goliath"
    require "pincerna/server"
    Goliath.env = "production" if !ENV["PINCERNA_DEBUG"]

    runner = Goliath::Runner.new(ARGV, nil)
    runner.api = Pincerna::Server.new
    runner.port = 13000 + Process.uid
    runner.log_file = "/var/log/pincerna-#{Process.uid}.log"
    runner.app = Goliath::Rack::Builder.build(Pincerna::Server, runner.api)
    runner.run
end