bushido 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Rakefile +7 -0
- data/bin/bushido +7 -5
- data/lib/bushido/app.rb +56 -51
- data/lib/bushido/command.rb +27 -11
- data/lib/bushido/platform.rb +19 -0
- data/lib/bushido/utils.rb +0 -12
- data/lib/bushido/version.rb +1 -1
- data/lib/bushido.rb +1 -4
- data/test/test_executable.rb +10 -0
- metadata +7 -5
- data/lib/bushido/user.rb +0 -111
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.lock
|
data/Rakefile
CHANGED
data/bin/bushido
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
begin
|
3
|
+
require 'bushido'
|
4
|
+
rescue LoadError
|
5
|
+
$: << File.expand_path("../../lib", __FILE__)
|
6
|
+
require 'bushido'
|
7
|
+
end
|
3
8
|
|
4
9
|
options = {}
|
5
10
|
|
6
|
-
commands = [:login, :remove_account, :claim, :list, :create, :show, :start, :stop, :restart, :update, :open, :logs, :add_var, :remove_var, :ssh_key, :api_key].
|
11
|
+
commands = [:login, :remove_account, :claim, :list, :create, :show, :start, :stop, :restart, :update, :open, :logs, :add_var, :remove_var, :ssh_key, :api_key].sort_by {|s| s.to_s}
|
7
12
|
|
8
13
|
help_docs = {
|
9
14
|
:login => "bushido login - Authorizes this machine to work under your Bushido account",
|
@@ -53,9 +58,6 @@ command = ARGV.first
|
|
53
58
|
|
54
59
|
if command
|
55
60
|
case command.downcase.to_sym
|
56
|
-
when :login then Bushido::User.reauth
|
57
|
-
when :api_key then Bushido::User.show_api_key
|
58
|
-
when :remove_account then Bushido::User.clear_config
|
59
61
|
|
60
62
|
when :claim then Bushido::App.claim(ARGV[1])
|
61
63
|
when :list then Bushido::App.list()
|
data/lib/bushido/app.rb
CHANGED
@@ -1,97 +1,102 @@
|
|
1
1
|
module Bushido
|
2
2
|
class App
|
3
3
|
class << self
|
4
|
-
def
|
5
|
-
Bushido::
|
4
|
+
def app_url
|
5
|
+
"#{Bushido::Platform.host}/apps/#{Bushido::Platform.app}.json"
|
6
|
+
end
|
6
7
|
|
7
|
-
puts "Creating from #{url} for #{Bushido::User.email}..."
|
8
8
|
|
9
|
-
|
9
|
+
def get(params={})
|
10
|
+
Bushido::Command.get_command(app_url, params)
|
10
11
|
end
|
11
12
|
|
12
|
-
def list
|
13
|
-
response = Bushido::Command.get_command("#{Temple}/apps")
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
14
|
+
def put(command, params={})
|
15
|
+
params[:command] = command
|
19
16
|
|
20
|
-
|
21
|
-
location = "http://#{name}.#{Bushido::Temple.gsub('http://','')}"
|
22
|
-
puts "Opening \"#{location}\" ..."
|
23
|
-
exec "open #{location}"
|
17
|
+
Bushido::Command.put_command(app_url, params)
|
24
18
|
end
|
25
19
|
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
|
21
|
+
def show
|
22
|
+
result = get
|
29
23
|
end
|
30
24
|
|
31
|
-
def put(app, command, params={})
|
32
|
-
url = "#{Temple}/apps/#{app}.json"
|
33
|
-
params[:command] = command
|
34
25
|
|
35
|
-
|
26
|
+
def start
|
27
|
+
put :start
|
36
28
|
end
|
37
29
|
|
38
|
-
|
39
|
-
|
40
|
-
|
30
|
+
|
31
|
+
def stop
|
32
|
+
put :stop
|
41
33
|
end
|
42
34
|
|
43
|
-
|
44
|
-
|
45
|
-
|
35
|
+
|
36
|
+
def restart
|
37
|
+
put :restart
|
46
38
|
end
|
47
39
|
|
48
|
-
|
49
|
-
|
40
|
+
|
41
|
+
def claim
|
42
|
+
put :claim
|
50
43
|
end
|
51
44
|
|
52
|
-
|
53
|
-
|
45
|
+
|
46
|
+
def update
|
47
|
+
put :update
|
54
48
|
end
|
55
49
|
|
56
|
-
|
57
|
-
|
50
|
+
|
51
|
+
def add_var(key, value)
|
52
|
+
put :add_var, {:key => key, :value => value}
|
58
53
|
end
|
59
54
|
|
60
|
-
|
61
|
-
|
55
|
+
|
56
|
+
def remove_var(key)
|
57
|
+
put :remove_var, {:key => key}
|
62
58
|
end
|
63
59
|
|
64
|
-
|
65
|
-
|
60
|
+
|
61
|
+
def domains
|
62
|
+
get()["app"]["domains"]
|
66
63
|
end
|
67
64
|
|
68
|
-
|
69
|
-
|
65
|
+
|
66
|
+
def subdomain
|
67
|
+
get()["app"]["subdomain"]
|
70
68
|
end
|
71
69
|
|
72
|
-
|
73
|
-
|
70
|
+
|
71
|
+
def set_subdomain(subdomain)
|
72
|
+
put :set_subdomain, {:subdomain => subdomain}
|
74
73
|
end
|
75
74
|
|
76
|
-
|
77
|
-
|
75
|
+
|
76
|
+
def add_domain(domain)
|
77
|
+
put :add_domain, {:domain => domain}
|
78
78
|
end
|
79
79
|
|
80
|
-
|
81
|
-
|
80
|
+
|
81
|
+
def remove_domain(domain)
|
82
|
+
put :remove_domain, {:domain => domain}
|
82
83
|
end
|
83
84
|
|
84
|
-
|
85
|
-
|
85
|
+
|
86
|
+
def clear_logs
|
87
|
+
put :clear_logs
|
86
88
|
end
|
87
89
|
|
88
|
-
|
89
|
-
|
90
|
+
|
91
|
+
def logs
|
92
|
+
get({:gift => "logs"})
|
90
93
|
end
|
91
94
|
|
92
|
-
|
93
|
-
|
95
|
+
|
96
|
+
def ssh_key
|
97
|
+
get({:gift => "ssh_key"})["ssh_key"]
|
94
98
|
end
|
95
99
|
end
|
96
100
|
end
|
97
101
|
end
|
102
|
+
|
data/lib/bushido/command.rb
CHANGED
@@ -1,34 +1,42 @@
|
|
1
1
|
module Bushido
|
2
2
|
class Command
|
3
|
+
@@last_request = nil
|
4
|
+
@@request_count = 0
|
5
|
+
|
3
6
|
class << self
|
7
|
+
def request_count
|
8
|
+
@@request_count
|
9
|
+
end
|
10
|
+
|
4
11
|
def get_command(url, params={})
|
5
|
-
|
12
|
+
@@request_count += 1
|
13
|
+
params.merge!({:auth_token => Bushido::Platform.key}) if params[:auth_token].nil? unless Bushido::Platform.key.nil?
|
6
14
|
|
7
15
|
raw = RestClient.get(url, {:params => params, :accept => :json})
|
8
|
-
|
16
|
+
@@last_request = JSON.parse raw
|
9
17
|
end
|
10
18
|
|
11
19
|
def post_command(url, params)
|
12
|
-
|
20
|
+
@@request_count += 1
|
21
|
+
params.merge!({:auth_token => Bushido::Platform.key}) if params[:auth_token].nil? unless Bushido::Platform.key.nil?
|
13
22
|
|
14
23
|
raw = RestClient.post(url, params.to_json, :content_type => :json, :accept => :json)
|
15
|
-
|
24
|
+
@@last_request = JSON.parse raw
|
16
25
|
end
|
17
26
|
|
18
27
|
def put_command(url, params, meta={})
|
28
|
+
@@request_count += 1
|
19
29
|
if meta[:force]
|
20
|
-
params.merge!({:auth_token => Bushido::
|
30
|
+
params.merge!({:auth_token => Bushido::Platform.key}) if params[:auth_token].nil? unless Bushido::Platform.key.nil?
|
21
31
|
|
22
32
|
raw = RestClient.put(url, params.to_json, :content_type => :json)
|
23
|
-
|
33
|
+
@@last_request = JSON.parse raw
|
24
34
|
|
25
35
|
else
|
26
|
-
Bushido::
|
27
|
-
params.merge!({:auth_token => Bushido::User.authentication_token}) if params[:auth_token].nil? unless Bushido::User.authentication_token.nil?
|
36
|
+
params.merge!({:auth_token => Bushido::Platform.key}) if params[:auth_token].nil? unless Bushido::Platform.key.nil?
|
28
37
|
|
29
|
-
|
30
|
-
|
31
|
-
end
|
38
|
+
raw = RestClient.put(url, params.to_json, :content_type => :json)
|
39
|
+
@@last_request = JSON.parse raw
|
32
40
|
end
|
33
41
|
end
|
34
42
|
|
@@ -54,6 +62,14 @@ module Bushido
|
|
54
62
|
end
|
55
63
|
end
|
56
64
|
end
|
65
|
+
|
66
|
+
def last_command_successful?
|
67
|
+
@@last_request.nil? or @@last_request["errors"].nil?
|
68
|
+
end
|
69
|
+
|
70
|
+
def last_command_errored?
|
71
|
+
not last_command_successful?
|
72
|
+
end
|
57
73
|
end
|
58
74
|
end
|
59
75
|
end
|
data/lib/bushido/utils.rb
CHANGED
@@ -1,18 +1,6 @@
|
|
1
1
|
module Bushido
|
2
2
|
class Utils
|
3
3
|
class << self
|
4
|
-
def while_authorized(&block)
|
5
|
-
if Bushido::User.authentication_token.nil? or Bushido::User.email.nil?
|
6
|
-
puts "Please authorized before attempting that command. You can run `bushido reauth` to update your credentials."
|
7
|
-
exit 1
|
8
|
-
else
|
9
|
-
yield
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def home_directory
|
14
|
-
ENV['HOME']
|
15
|
-
end
|
16
4
|
end
|
17
5
|
end
|
18
6
|
end
|
data/lib/bushido/version.rb
CHANGED
data/lib/bushido.rb
CHANGED
@@ -5,11 +5,8 @@ module Bushido
|
|
5
5
|
require 'json'
|
6
6
|
require 'highline/import'
|
7
7
|
|
8
|
-
require "bushido/
|
8
|
+
require "bushido/platform"
|
9
9
|
require "bushido/utils"
|
10
10
|
require "bushido/command"
|
11
11
|
require "bushido/app"
|
12
|
-
|
13
|
-
host = ENV["HOST"] || "bushi.do"
|
14
|
-
Temple = "http://#{host}/"
|
15
12
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
|
3
|
+
class TestExecutable < Test::Unit::TestCase
|
4
|
+
EXECUTABLE =
|
5
|
+
def test_complains_with_no_args
|
6
|
+
output = %x{#{File.expand_path('../../bin/bushido', __FILE__)}}
|
7
|
+
assert output =~ /See bushido -h for more detailed instructions/
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: bushido
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.10
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Sean Grove
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-03-23 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -56,6 +56,7 @@ extensions: []
|
|
56
56
|
extra_rdoc_files: []
|
57
57
|
|
58
58
|
files:
|
59
|
+
- .gitignore
|
59
60
|
- Gemfile
|
60
61
|
- Rakefile
|
61
62
|
- bin/bushido
|
@@ -63,9 +64,10 @@ files:
|
|
63
64
|
- lib/bushido.rb
|
64
65
|
- lib/bushido/app.rb
|
65
66
|
- lib/bushido/command.rb
|
66
|
-
- lib/bushido/
|
67
|
+
- lib/bushido/platform.rb
|
67
68
|
- lib/bushido/utils.rb
|
68
69
|
- lib/bushido/version.rb
|
70
|
+
- test/test_executable.rb
|
69
71
|
has_rdoc: true
|
70
72
|
homepage: http://gem.bushi.do
|
71
73
|
licenses: []
|
@@ -94,5 +96,5 @@ rubygems_version: 1.5.0
|
|
94
96
|
signing_key:
|
95
97
|
specification_version: 3
|
96
98
|
summary: Command-lin interface for bushi.do
|
97
|
-
test_files:
|
98
|
-
|
99
|
+
test_files:
|
100
|
+
- test/test_executable.rb
|
data/lib/bushido/user.rb
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
module Bushido
|
2
|
-
class User
|
3
|
-
class << self
|
4
|
-
def account
|
5
|
-
load_config || {}
|
6
|
-
end
|
7
|
-
|
8
|
-
def clear_config
|
9
|
-
print "Clearing out all local bushido configuration..."
|
10
|
-
FileUtils.rm_rf "#{Bushido::Utils.home_directory}/.bushido/"
|
11
|
-
puts "done"
|
12
|
-
end
|
13
|
-
|
14
|
-
def load_config
|
15
|
-
begin
|
16
|
-
return JSON.parse(File.open(File.expand_path("#{Bushido::Utils.home_directory}/.bushido/config.json"), 'r') { |l| l.read })
|
17
|
-
rescue Errno::ENOENT
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def load_account
|
22
|
-
begin
|
23
|
-
@account = JSON.parse(File.open(File.expand_path("#{Bushido::Utils.home_directory}/.bushido/config.json"), 'r') { |l| l.read })
|
24
|
-
rescue Errno::ENOENT
|
25
|
-
@account = retrieve_account("Couldn't find your Bushido config on this machine.")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def reauth
|
30
|
-
retrieve_account("Re-authenticating your account.")
|
31
|
-
end
|
32
|
-
|
33
|
-
def update_account(account)
|
34
|
-
print "Storing account information..."
|
35
|
-
Dir.mkdir "#{Bushido::Utils.home_directory}/.bushido" unless (File.exist?("#{Bushido::Utils.home_directory}/.bushido") and File.directory?("#{Bushido::Utils.home_directory}/.bushido"))
|
36
|
-
File.open(File.expand_path("#{Bushido::Utils.home_directory}/.bushido/config.json"), 'w') { |f| f.write(account.to_json) }
|
37
|
-
puts " Done!"
|
38
|
-
end
|
39
|
-
|
40
|
-
def retrieve_account(msg)
|
41
|
-
puts "#{msg} Enter your username and password, and we'll either retrieve if from your existing account on our servers, or create a new account for you."
|
42
|
-
credentials = self.prompt_for_credentials
|
43
|
-
puts "Please wait while we look up the account information..."
|
44
|
-
|
45
|
-
result = Bushido::Command.put_command "#{Bushido::Temple}/users/verify", {:email => credentials[:email], :password => credentials[:password]}, {:force => true}
|
46
|
-
|
47
|
-
if result["authentication_token"] and result["error"].nil?
|
48
|
-
update_account({:email => credentials[:email], :authentication_token => result["authentication_token"]})
|
49
|
-
return {:email => credentials[:email], :authentication_token => result["authentication_token"]}
|
50
|
-
else
|
51
|
-
puts result["error"]
|
52
|
-
if result["error_type"] == "verification_failure"
|
53
|
-
puts ""
|
54
|
-
print "If this is your first time using Bushido, would you like to create an account using the email and password you just entered?\n[y/n] "
|
55
|
-
if $stdin.gets.chomp == "y"
|
56
|
-
self.create_account(credentials)
|
57
|
-
else
|
58
|
-
exit 1
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def create_account(credentials)
|
65
|
-
# GET instead of POST because of AuthenticityToken issues. Deal with it later.
|
66
|
-
result = Bushido::Command.post_command "#{Bushido::Temple}/users/create.json", {:email => credentials[:email], :password => credentials[:password]}
|
67
|
-
|
68
|
-
Bushido::Command.show_response result
|
69
|
-
|
70
|
-
if result["errors"].nil?
|
71
|
-
update_account result
|
72
|
-
return credentials
|
73
|
-
else
|
74
|
-
exit 1
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def show_api_key
|
79
|
-
puts "#{account['authentication_token']}"
|
80
|
-
end
|
81
|
-
|
82
|
-
def authentication_token
|
83
|
-
account["authentication_token"]
|
84
|
-
end
|
85
|
-
|
86
|
-
def email
|
87
|
-
account["email"]
|
88
|
-
end
|
89
|
-
|
90
|
-
def prompt_for_credentials(confirm=false)
|
91
|
-
result = {
|
92
|
-
:email => self.prompt_for_email,
|
93
|
-
:password => self.prompt_for_password
|
94
|
-
}
|
95
|
-
|
96
|
-
result.merge!({:password_confirmation => self.prompt_for_password(" Confirm: ")}) if confirm
|
97
|
-
|
98
|
-
return result
|
99
|
-
end
|
100
|
-
|
101
|
-
def prompt_for_email
|
102
|
-
print " Email: "
|
103
|
-
email = $stdin.gets.chomp
|
104
|
-
end
|
105
|
-
|
106
|
-
def prompt_for_password(prompt=" Password:")
|
107
|
-
ask(prompt) { |q| q.echo = false }
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|