Class: Meroku::CLI::Cli
- Inherits:
-
Thor
- Object
- Thor
- Meroku::CLI::Cli
- Includes:
- Util
- Defined in:
- lib/meroku/cli/cli.rb
Instance Method Summary collapse
Instance Method Details
#_run(command) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/meroku/cli/cli.rb', line 16 def _run(command) user_id = `cat /tmp/meroku.id`.chomp server = "u#{user_id}@www.meroku.com" name = app_name if IO.read("Gemfile") =~ /^[^\#]*gem ["']mysql/ dbtype="mysql" else dbtype="postgres" end _additional_env_vars = additional_env_vars(name,dbtype) if command == "bash" exec "ssh -t -o StrictHostKeyChecking=no #{server} '#{_additional_env_vars} ;echo INFO: Type exit quit this remote shell; cd #{name}; bash --login'" end abort "ERROR: Unexpected output for \"git remote -v\"" if name.blank? require 'open3' stdout, stderr, exit_status = Open3.capture3(%Q[ssh -o 'StrictHostKeyChecking=no' #{server} 'export PATH=$PATH:/opt/bitnami/nodejs/bin; source ~/.rvm/scripts/rvm; cd #{name}; #{_additional_env_vars} ; #{command}']) puts stdout if !stdout.empty? puts stderr if !stderr.empty? puts "meroku run finished with exit code #{exit_status.exitstatus}" if exit_status.exitstatus != 0 end |
#create(name) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/meroku/cli/cli.rb', line 39 def create(name) require 'rest-client' require 'rack' return if !cli_logged_in? resp = RestClient.post 'https://www.meroku.com/meroku/apps.json', { :"app[name]" => name, authentication: { app: name, token: cli_token} } puts "Created #{JSON.parse(resp)["name"]}! (#{resp.code} #{Rack::Utils::HTTP_STATUS_CODES[resp.code]})" `git remote remove meroku 2>&1 >/dev/null` `git remote add meroku u#{cli_user_id}@www.meroku.com:#{name}.git 2>&1 >/dev/null` puts "Added git remote meroku ( u#{cli_user_id}@www.meroku.com:#{name}.git )" rescue RestClient::Exception => e abort e.to_s if e == RestClient::ServerBrokeConnection out_str = "ERROR" if valid_json?(e.response) && JSON.parse(e.response)["errors"].size >= 1 out_str += " " out_str += JSON.parse(e.response)["errors"].map { |e| e.join(' ') }.to_sentence end out_str += " (#{e.to_s}) " puts out_str end |
#login ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/meroku/cli/cli.rb', line 63 def login() require 'rest-client' require 'rack' resp = RestClient.post 'https://www.meroku.com/users/sign_in.json', {:"user[email]" => [:email], :"user[password]" => [:password] } puts "Logged in! (#{resp.code} #{Rack::Utils::HTTP_STATUS_CODES[resp.code]})" IO.write("/tmp/meroku.token", JSON.parse(resp)["encrypted_password"]) IO.write("/tmp/meroku.id", JSON.parse(resp)["id"]) rescue RestClient::Exception => e abort e.to_s if e.response.code == 500 || e.response.code == 404 out_str = "ERROR" if JSON.parse(e.response)["errors"].is_a? Array out_str += " " out_str += JSON.parse(e.response)["errors"].map { |e| e.join(' ') }.to_sentence end out_str += " (#{e.to_s}) " puts out_str end |
#signup ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/meroku/cli/cli.rb', line 84 def signup() require 'rest-client' require 'rack' resp = RestClient.post 'https://www.meroku.com/users.json', {:"user[email]" => [:email], :"user[password]" => [:password], :"user[password_confirmation]" => [:password] } puts "Signed up #{JSON.parse(resp)["email"]}! (#{resp.code} #{Rack::Utils::HTTP_STATUS_CODES[resp.code]})" rescue RestClient::Exception => e abort e.to_s if e.response.code == 500 || e.response.code == 404 puts "ERROR " + JSON.parse(e.response)["errors"].map { |e| e.join(' ') }.to_sentence + " (#{e.to_s})" end |