appli 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/appli/command.rb CHANGED
@@ -47,16 +47,27 @@ module Appli
47
47
  end
48
48
  end
49
49
 
50
- def api_request(url, username, password, data = nil)
50
+ def api_request(url, username, password, data = nil, method = nil)
51
51
  require 'uri'
52
52
  require 'net/http'
53
53
  require 'net/https'
54
54
  uri = URI.parse(url)
55
- if data
56
- req = Net::HTTP::Post.new(uri.path)
55
+
56
+ if method.nil?
57
+ method = (data ? :post : :get)
58
+ end
59
+
60
+ req = case method
61
+ when :post
62
+ Net::HTTP::Post.new(uri.path)
63
+ when :delete
64
+ Net::HTTP::Delete.new(uri.path)
65
+ when :put
66
+ Net::HTTP::Put.new(uri.path)
57
67
  else
58
- req = Net::HTTP::Get.new(uri.path)
68
+ Net::HTTP::Get.new(uri.path)
59
69
  end
70
+
60
71
  req.basic_auth(username, password)
61
72
  req.add_field("Accept", "application/json")
62
73
  req.add_field("Content-type", "application/json")
@@ -65,7 +76,7 @@ module Appli
65
76
  res.use_ssl = true
66
77
  res.verify_mode = OpenSSL::SSL::VERIFY_NONE
67
78
  end
68
- puts "Requesting '#{url}' on as #{data ? 'POST' : 'GET'}" if debug?
79
+ puts "Requesting '#{url}' on as #{method.to_s.upcase}" if debug?
69
80
  res = res.request(req, data)
70
81
  case res
71
82
  when Net::HTTPSuccess
@@ -93,12 +104,12 @@ module Appli
93
104
  JSON.parse(api(path))
94
105
  end
95
106
 
96
- def api(path, data = nil)
97
- api_request("http://#{domain}/#{path}", git_config_variable(:username), git_config_variable(:apikey), data)
107
+ def api(path, data = nil, method = nil)
108
+ api_request("http://#{domain}/#{path}", git_config_variable(:username), git_config_variable(:apikey), data, method)
98
109
  end
99
110
 
100
- def api_on_app(path, data = nil)
101
- api("applications/#{@options[:application]}/#{path}", data)
111
+ def api_on_app(path, data = nil, method = nil)
112
+ api("applications/#{@options[:application]}/#{path}", data, method)
102
113
  end
103
114
 
104
115
  def domain
@@ -114,11 +125,20 @@ module Appli
114
125
  puts "Executing: #{command}" if debug?
115
126
  `#{command}`
116
127
  end
128
+
129
+ def ssh_exec(command)
130
+ exec("ssh -p #{application['ssh_port']} app@#{host['name']} \"#{command}\"")
131
+ end
117
132
 
118
133
  def error(command, exit_code = 1)
119
134
  $stderr.puts command
120
135
  Process.exit(exit_code)
121
136
  end
122
-
137
+
138
+ def display_errors
139
+ for key, value in JSON.parse(errors)
140
+ puts " * #{key.capitalize} #{value}"
141
+ end
142
+ end
123
143
  end
124
144
  end
data/lib/appli.rb CHANGED
@@ -14,7 +14,7 @@ module Appli
14
14
  class NotConfiguredError < StandardError; end
15
15
  class MustBeInRepositoryError < StandardError; end
16
16
 
17
- VERSION = "0.0.6"
17
+ VERSION = "0.0.7"
18
18
 
19
19
  def run(command, args = [])
20
20
  load_commands
@@ -173,6 +173,3 @@ Appli.usage "cb version"
173
173
  Appli.command "version", :global => true do
174
174
  puts "Appli Gem Version #{Appli::VERSION}"
175
175
  end
176
-
177
- Appli.alias '-v', 'version'
178
- Appli.alias '-s', 'ssh'
data/lib/commands/apps.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  desc 'Display a list of all applications which you have access to'
2
- usage "appli apps"
3
- command "apps", :global => true do
2
+ usage "appli list"
3
+ command "list", :global => true do
4
4
  apps = get("applications")
5
5
 
6
6
  hash = [[:name, "Name", 30], [:identifier , "Identifier", 30], [:ssh_port, "SSH Port", 12], [:host, "Host", 30]]
@@ -34,9 +34,7 @@ command "create", :global => true, :required_args => 1 do |identifier|
34
34
  result = api('applications', {:application => {:identifier => identifier, :name => identifier}}.to_json)
35
35
  if errors
36
36
  puts "\nAn error occured while creating your application:"
37
- for e in JSON.parse(errors)
38
- puts " * #{e.join(' ')}"
39
- end
37
+ display_errors
40
38
  puts
41
39
  Process.exit(1)
42
40
  else
@@ -0,0 +1,40 @@
1
+ desc 'List all domains configured for this application'
2
+ usage "appli [application] domains:list"
3
+ command "domains:list" do
4
+ domains = JSON.parse(api_on_app("domains"))
5
+ for domain in domains
6
+ extra = ''
7
+ extra = '(primary)' if domain['domain']['primary']
8
+ extra = '(redirect)' if domain['domain']['redirect']
9
+ puts " * #{domain['domain']['domain']} #{extra}"
10
+ end
11
+ end
12
+
13
+ desc "Add a new domain for this application"
14
+ usage "appli [application] domains:add {domain} {options}"
15
+ command "domains:add", :required_args => 1 do |name, options|
16
+ options = "" if options.nil?
17
+ if api_on_app("domains", {:domain => {:domain => name, :redirect => options.include?('redirect')}}.to_json)
18
+ puts "Domain '#{name}' added successfully."
19
+ else
20
+ puts "An error occured while adding your domain:"
21
+ display_errors
22
+ end
23
+ end
24
+
25
+ desc 'Remove a domain from this application'
26
+ usage "appli [application] domains:remove {domain}"
27
+ command "domains:remove", :required_args => 1 do |name|
28
+ domains = JSON.parse(api_on_app('domains'))
29
+ domain = domains.select{|d| d['domain']['domain'] == name}.first
30
+ if domain
31
+ if api_on_app("domains/#{domain['domain']['id']}", nil, :delete)
32
+ puts "Domain ('#{name}') removed successfully"
33
+ else
34
+ error "Domain could not be removed at this time."
35
+ end
36
+ else
37
+ error "Domain ('#{name}') does not exist within this application"
38
+ end
39
+ end
40
+
data/lib/commands/gems.rb CHANGED
@@ -15,7 +15,7 @@ class FakeGemfile
15
15
  end
16
16
 
17
17
  desc "Read in the specified Gemfile and install all the required gems on your application"
18
- usage "appli gems:import"
18
+ usage "appli [application] gems:import {path to file}"
19
19
  command "gems:import" do |file|
20
20
  file_to_import = File.expand_path(file || 'Gemfile')
21
21
  unless File.exist?(file_to_import)
@@ -38,9 +38,9 @@ command "gems:import" do |file|
38
38
  end
39
39
  end
40
40
 
41
- desc "Install the named gem"
42
- usage "appli gems:install [gem name] [version]"
43
- command "gems:install" do |name, version|
41
+ desc "Install the provided gem on your application's container"
42
+ usage "appli [application] gems:install {gem name} {version]"
43
+ command "gems:install", :required_args => 1 do |name, version|
44
44
  puts "Installing #{name} (#{version || 'latest'})"
45
45
  data = {:ruby_gem => {:name => name, :version => version || ''}}.to_json
46
46
  if a = api_on_app("ruby_gems", data)
@@ -51,7 +51,7 @@ command "gems:install" do |name, version|
51
51
  end
52
52
  end
53
53
 
54
- desc "List all installed gems on your application"
54
+ desc "List all installed gems for your application"
55
55
  usage "appli gems"
56
56
  command "gems" do
57
57
  ssh "gem list"
@@ -0,0 +1,14 @@
1
+ desc "Upload your local public key to your appli user account"
2
+ usage "appli keys:add {key file}"
3
+ command "keys:add", :global => true do |file|
4
+ file = "#{ENV['HOME']}/.ssh/id_rsa.pub" if file.nil?
5
+ error("Key file not found at '#{file}'") unless File.file?(file)
6
+ key_data = File.read(file).chomp
7
+ data = {:key => {:key => key_data}}.to_json
8
+ if api("settings/keys", data)
9
+ puts "SSH key uploaded successfully from '#{file}'"
10
+ else
11
+ puts "Sorry, an error occured while adding your key. Please check the errors below:"
12
+ display_errors
13
+ end
14
+ end
@@ -0,0 +1,6 @@
1
+ desc "View a log file on the remote system locally"
2
+ usage "appli [application] log {log file}"
3
+ command "log" do |file|
4
+ file = "~/app/current/log/production.log" if file.nil?
5
+ ssh_exec "tail -f -n 200 #{file}"
6
+ end
@@ -30,7 +30,7 @@ end
30
30
 
31
31
  desc 'List all databases on this application'
32
32
  usage "appli [application] db"
33
- command "db" do
33
+ command "db:list" do
34
34
  puts '-' * 85
35
35
  print 'Name'.ljust(15)
36
36
  print 'Username'.ljust(15)
@@ -0,0 +1,5 @@
1
+ desc 'Create an SSH connection to the application'
2
+ usage "appli [application] ssh"
3
+ command "ssh" do
4
+ exec "ssh -p #{application['ssh_port']} app@#{host['name']}"
5
+ end
@@ -24,16 +24,3 @@ command "diskusage" do
24
24
  puts "Your system is limited to #{size} however if you need additional"
25
25
  puts "space, please just contact support."
26
26
  end
27
-
28
- desc "Display the current settings"
29
- command "settings", :global => true do
30
- puts "Username........: #{git_config_variable(:username) || 'unknown'}"
31
- puts "API Key.........: #{git_config_variable(:apikey) || 'unknown'}"
32
- puts "Domain..........: #{git_config_variable(:domain) || 'unknown'}"
33
- end
34
-
35
- desc 'SSH to the named server'
36
- usage "appli [application] ssh"
37
- command "ssh" do
38
- exec "ssh -p #{application['ssh_port']} app@#{host['name']}"
39
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cooke
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-16 00:00:00 +00:00
12
+ date: 2010-02-19 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -36,9 +36,13 @@ files:
36
36
  - lib/appli.rb
37
37
  - lib/commands/apps.rb
38
38
  - lib/commands/cap.rb
39
+ - lib/commands/domains.rb
39
40
  - lib/commands/gems.rb
41
+ - lib/commands/keys.rb
42
+ - lib/commands/logs.rb
40
43
  - lib/commands/mysql.rb
41
- - lib/commands/system.rb
44
+ - lib/commands/ssh.rb
45
+ - lib/commands/stats.rb
42
46
  has_rdoc: true
43
47
  homepage: http://www.atechmedia.com
44
48
  licenses: []