engineyard 0.2.13 → 0.3.0
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/engineyard.rb +1 -1
- data/lib/engineyard/action/deploy.rb +1 -1
- data/lib/engineyard/action/util.rb +0 -28
- data/lib/engineyard/cli.rb +71 -8
- metadata +4 -9
- data/lib/engineyard/#repo.rb# +0 -24
- data/lib/engineyard/action/list_environments.rb +0 -22
- data/lib/engineyard/action/show_logs.rb +0 -26
- data/lib/engineyard/action/ssh.rb +0 -19
- data/lib/engineyard/action/upload_recipes.rb +0 -17
data/lib/engineyard.rb
CHANGED
@@ -14,34 +14,6 @@ module EY
|
|
14
14
|
@repo ||= EY::Repo.new
|
15
15
|
end
|
16
16
|
|
17
|
-
def app_and_envs(all_envs = false)
|
18
|
-
app = account.app_for_repo(repo)
|
19
|
-
|
20
|
-
if all_envs || !app
|
21
|
-
envs = account.environments
|
22
|
-
EY.ui.warn(NoAppError.new(repo).message) unless app || all_envs
|
23
|
-
[nil, envs]
|
24
|
-
else
|
25
|
-
envs = app.environments
|
26
|
-
if envs.empty?
|
27
|
-
EY.ui.warn %|You have no environments set up for the application "#{app.name}"|
|
28
|
-
EY.ui.warn %|You can make one at #{EY.config.endpoint}|
|
29
|
-
end
|
30
|
-
envs.empty? ? [app, nil] : [app, envs]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def env_named(name)
|
35
|
-
env = account.environment_named(name)
|
36
|
-
|
37
|
-
if env.nil?
|
38
|
-
raise EnvironmentError, "Environment '#{env_name}' can't be found\n" +
|
39
|
-
"You can create it at #{EY.config.endpoint}"
|
40
|
-
else
|
41
|
-
env
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
17
|
end
|
46
18
|
end
|
47
19
|
end
|
data/lib/engineyard/cli.rb
CHANGED
@@ -32,8 +32,16 @@ module EY
|
|
32
32
|
desc "environments [--all]", "List cloud environments for this app, or all environments"
|
33
33
|
method_option :all, :type => :boolean, :aliases => %(-a)
|
34
34
|
def environments
|
35
|
-
|
36
|
-
|
35
|
+
app, envs = app_and_envs(options[:all])
|
36
|
+
if app
|
37
|
+
EY.ui.say %|Cloud environments for #{app.name}:|
|
38
|
+
EY.ui.print_envs(envs, EY.config.default_environment)
|
39
|
+
elsif envs
|
40
|
+
EY.ui.say %|Cloud environments:|
|
41
|
+
EY.ui.print_envs(envs, EY.config.default_environment)
|
42
|
+
else
|
43
|
+
EY.ui.say %|You do not have any cloud environments.|
|
44
|
+
end
|
37
45
|
end
|
38
46
|
map "envs" => :environments
|
39
47
|
|
@@ -45,20 +53,38 @@ module EY
|
|
45
53
|
|
46
54
|
desc "ssh ENV", "Open an ssh session to the environment's application server"
|
47
55
|
def ssh(name)
|
48
|
-
|
49
|
-
|
56
|
+
env = account.environment_named(name)
|
57
|
+
if env
|
58
|
+
Kernel.exec "ssh", "#{env.username}@#{env.app_master.public_hostname}", *ARGV[2..-1]
|
59
|
+
else
|
60
|
+
EY.ui.warn %|Could not find an environment named "#{name}"|
|
61
|
+
end
|
50
62
|
end
|
51
63
|
|
52
64
|
desc "logs ENV", "Retrieve the latest logs for an enviornment"
|
53
65
|
def logs(name)
|
54
|
-
|
55
|
-
|
66
|
+
env_named(name).logs.each do |log|
|
67
|
+
EY.ui.info log.instance_name
|
68
|
+
|
69
|
+
if log.main
|
70
|
+
EY.ui.info "Main logs:"
|
71
|
+
EY.ui.say log.main
|
72
|
+
end
|
73
|
+
|
74
|
+
if log.custom
|
75
|
+
EY.ui.info "Custom logs:"
|
76
|
+
EY.ui.say log.custom
|
77
|
+
end
|
78
|
+
end
|
56
79
|
end
|
57
80
|
|
58
81
|
desc "upload_recipes ENV", "Upload custom chef recipes from the current directory to ENV"
|
59
82
|
def upload_recipes(name)
|
60
|
-
|
61
|
-
|
83
|
+
if account.upload_recipes_for(env_named(name))
|
84
|
+
EY.ui.say "Recipes uploaded successfully"
|
85
|
+
else
|
86
|
+
EY.ui.error "Recipes upload failed"
|
87
|
+
end
|
62
88
|
end
|
63
89
|
|
64
90
|
desc "version", "Print the version of the engineyard gem"
|
@@ -67,5 +93,42 @@ module EY
|
|
67
93
|
end
|
68
94
|
map "-v" => :version
|
69
95
|
|
96
|
+
private
|
97
|
+
def account
|
98
|
+
@account ||= EY::Account.new(EY::CLI::API.new)
|
99
|
+
end
|
100
|
+
|
101
|
+
def repo
|
102
|
+
@repo ||= EY::Repo.new
|
103
|
+
end
|
104
|
+
|
105
|
+
def env_named(env_name)
|
106
|
+
env = account.environment_named(env_name)
|
107
|
+
|
108
|
+
if env.nil?
|
109
|
+
raise EnvironmentError, "Environment '#{env_name}' can't be found\n" +
|
110
|
+
"You can create it at #{EY.config.endpoint}"
|
111
|
+
end
|
112
|
+
|
113
|
+
env
|
114
|
+
end
|
115
|
+
|
116
|
+
def app_and_envs(all_envs = false)
|
117
|
+
app = account.app_for_repo(repo)
|
118
|
+
|
119
|
+
if all_envs || !app
|
120
|
+
envs = account.environments
|
121
|
+
EY.ui.warn(NoAppError.new(repo).message) unless app || all_envs
|
122
|
+
[nil, envs]
|
123
|
+
else
|
124
|
+
envs = app.environments
|
125
|
+
if envs.empty?
|
126
|
+
EY.ui.warn %|You have no environments set up for the application "#{app.name}"|
|
127
|
+
EY.ui.warn %|You can make one at #{EY.config.endpoint}|
|
128
|
+
end
|
129
|
+
envs.empty? ? [app, nil] : [app, envs]
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
70
133
|
end # CLI
|
71
134
|
end # EY
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- EY Cloud Team
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-12 00:00:00 -07:00
|
18
18
|
default_executable: ey
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -94,7 +94,6 @@ extra_rdoc_files: []
|
|
94
94
|
|
95
95
|
files:
|
96
96
|
- bin/ey
|
97
|
-
- lib/engineyard/#repo.rb#
|
98
97
|
- lib/engineyard/account/api_struct.rb
|
99
98
|
- lib/engineyard/account/app.rb
|
100
99
|
- lib/engineyard/account/app_master.rb
|
@@ -103,11 +102,7 @@ files:
|
|
103
102
|
- lib/engineyard/account/log.rb
|
104
103
|
- lib/engineyard/account.rb
|
105
104
|
- lib/engineyard/action/deploy.rb
|
106
|
-
- lib/engineyard/action/list_environments.rb
|
107
105
|
- lib/engineyard/action/rebuild.rb
|
108
|
-
- lib/engineyard/action/show_logs.rb
|
109
|
-
- lib/engineyard/action/ssh.rb
|
110
|
-
- lib/engineyard/action/upload_recipes.rb
|
111
106
|
- lib/engineyard/action/util.rb
|
112
107
|
- lib/engineyard/api.rb
|
113
108
|
- lib/engineyard/cli/api.rb
|
data/lib/engineyard/#repo.rb#
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module EY
|
2
|
-
class Repo
|
3
|
-
|
4
|
-
def initialize(path=File.expand_path('.'))
|
5
|
-
@path = path
|
6
|
-
end
|
7
|
-
|
8
|
-
def current_branch
|
9
|
-
head = File.read(File.join(@path, ".git/HEAD")).chomp
|
10
|
-
if head.gsub!("ref: refs/heads/", "")
|
11
|
-
head
|
12
|
-
else
|
13
|
-
nil
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def urls
|
18
|
-
`git config -f #{@path}/.git/config --get-regexp 'remote.*.url'`.split(/\n/).map do |c|
|
19
|
-
c.split.last
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end # Repo
|
24
|
-
end # EY
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'engineyard/action/util'
|
2
|
-
|
3
|
-
module EY
|
4
|
-
module Action
|
5
|
-
class ListEnvironments
|
6
|
-
extend Util
|
7
|
-
|
8
|
-
def self.call(all)
|
9
|
-
app, envs = app_and_envs(all)
|
10
|
-
if app
|
11
|
-
EY.ui.say %|Cloud environments for #{app.name}:|
|
12
|
-
EY.ui.print_envs(envs, EY.config.default_environment)
|
13
|
-
elsif envs
|
14
|
-
EY.ui.say %|Cloud environments:|
|
15
|
-
EY.ui.print_envs(envs, EY.config.default_environment)
|
16
|
-
else
|
17
|
-
EY.ui.say %|You do not have any cloud environments.|
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'engineyard/action/util'
|
2
|
-
|
3
|
-
module EY
|
4
|
-
module Action
|
5
|
-
class ShowLogs
|
6
|
-
extend Util
|
7
|
-
|
8
|
-
def self.call(name)
|
9
|
-
env_named(name).logs.each do |log|
|
10
|
-
EY.ui.info log.instance_name
|
11
|
-
|
12
|
-
if log.main
|
13
|
-
EY.ui.info "Main logs:"
|
14
|
-
EY.ui.say log.main
|
15
|
-
end
|
16
|
-
|
17
|
-
if log.custom
|
18
|
-
EY.ui.info "Custom logs:"
|
19
|
-
EY.ui.say log.custom
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'engineyard/action/util'
|
2
|
-
|
3
|
-
module EY
|
4
|
-
module Action
|
5
|
-
class SSH
|
6
|
-
extend Util
|
7
|
-
|
8
|
-
def self.call(name)
|
9
|
-
|
10
|
-
env = account.environment_named(name)
|
11
|
-
if env
|
12
|
-
Kernel.exec "ssh", "#{env.username}@#{env.app_master.public_hostname}", *ARGV[2..-1]
|
13
|
-
else
|
14
|
-
EY.ui.warn %|Could not find an environment named "#{name}"|
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'engineyard/action/util'
|
2
|
-
|
3
|
-
module EY
|
4
|
-
module Action
|
5
|
-
class UploadRecipes
|
6
|
-
extend Util
|
7
|
-
|
8
|
-
def self.call(name)
|
9
|
-
if account.upload_recipes_for(env_named(name))
|
10
|
-
EY.ui.say "Recipes uploaded successfully"
|
11
|
-
else
|
12
|
-
EY.ui.error "Recipes upload failed"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|