engineyard 1.3.2 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/engineyard/api.rb +1 -0
- data/lib/engineyard/cli.rb +0 -2
- data/lib/engineyard/repo.rb +2 -1
- data/lib/engineyard/resolver.rb +13 -1
- data/lib/engineyard/thor.rb +2 -0
- data/lib/engineyard/version.rb +1 -1
- data/spec/engineyard/repo_spec.rb +0 -5
- data/spec/engineyard/resolver_spec.rb +0 -4
- data/spec/ey/recipes/apply_spec.rb +5 -0
- data/spec/ey/recipes/upload_spec.rb +47 -0
- data/spec/ey/web/enable_spec.rb +5 -0
- metadata +10 -10
data/lib/engineyard/api.rb
CHANGED
data/lib/engineyard/cli.rb
CHANGED
data/lib/engineyard/repo.rb
CHANGED
@@ -3,6 +3,8 @@ require 'escape'
|
|
3
3
|
module EY
|
4
4
|
class Repo
|
5
5
|
|
6
|
+
attr_reader :path
|
7
|
+
|
6
8
|
def initialize(path=File.expand_path('.'))
|
7
9
|
@path = path
|
8
10
|
end
|
@@ -26,7 +28,6 @@ module EY
|
|
26
28
|
|
27
29
|
def urls
|
28
30
|
lines = `git config -f #{Escape.shell_command([@path])}/.git/config --get-regexp 'remote.*.url'`.split(/\n/)
|
29
|
-
raise NoRemotesError.new(@path) if lines.empty?
|
30
31
|
lines.map { |c| c.split.last }
|
31
32
|
end
|
32
33
|
|
data/lib/engineyard/resolver.rb
CHANGED
@@ -99,7 +99,7 @@ module EY
|
|
99
99
|
app_candidates = if options[:app_name]
|
100
100
|
filter_candidates_by(:app_name, options, candidates)
|
101
101
|
elsif options[:repo]
|
102
|
-
candidates
|
102
|
+
filter_by_repo(candidates, options[:repo])
|
103
103
|
else
|
104
104
|
candidates
|
105
105
|
end
|
@@ -109,6 +109,18 @@ module EY
|
|
109
109
|
[candidates, account_candidates, app_candidates, environment_candidates]
|
110
110
|
end
|
111
111
|
|
112
|
+
def filter_by_repo(candidates, repo)
|
113
|
+
results = candidates.select do |c|
|
114
|
+
repo.urls.include?(c[:repository_uri])
|
115
|
+
end
|
116
|
+
|
117
|
+
if results.empty?
|
118
|
+
candidates
|
119
|
+
else
|
120
|
+
results
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
112
124
|
def filter_candidates_by(type, options, candidates)
|
113
125
|
if options[type] && candidates.any?{|c| c[type] == options[type] }
|
114
126
|
candidates.select {|c| c[type] == options[type] }
|
data/lib/engineyard/thor.rb
CHANGED
data/lib/engineyard/version.rb
CHANGED
@@ -32,11 +32,6 @@ describe EY::Repo do
|
|
32
32
|
@r.urls.should include(other_url)
|
33
33
|
end
|
34
34
|
|
35
|
-
it "raises EY::NoRemotesError if there is no origin remote" do
|
36
|
-
clear_urls
|
37
|
-
lambda { @r.urls }.should raise_error(EY::NoRemotesError)
|
38
|
-
end
|
39
|
-
|
40
35
|
def config_path
|
41
36
|
@path+"config"
|
42
37
|
end
|
@@ -59,10 +59,6 @@ describe EY::Resolver do
|
|
59
59
|
lambda { resolver.app_and_environment(:environment_name => 'app_duplicate', :app_name => 'smallapp') }.should raise_error(EY::InvalidAppError)
|
60
60
|
end
|
61
61
|
|
62
|
-
it "raises when the git repo does not match any apps" do
|
63
|
-
lambda { resolver.app_and_environment(:environment_name => 'app_duplicate', :repo => repo("git://github.com/no-such/app.git")) }.should raise_error(EY::NoAppError)
|
64
|
-
end
|
65
|
-
|
66
62
|
it "raises when there is no environment match" do
|
67
63
|
lambda { resolver.app_and_environment(:environment_name => 'gibberish', :app_name => 'app') }.should raise_error(EY::NoEnvironmentError)
|
68
64
|
end
|
@@ -15,6 +15,11 @@ describe "ey recipes apply" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it_should_behave_like "it takes an environment name and an account name"
|
18
|
+
|
19
|
+
it "fails when given a bad option" do
|
20
|
+
ey "web enable --lots --of --bogus --options", :expect_failure => true
|
21
|
+
@err.should include("Unknown switches")
|
22
|
+
end
|
18
23
|
end
|
19
24
|
|
20
25
|
describe "ey recipes apply with an ambiguous git repo" do
|
@@ -28,3 +28,50 @@ describe "ey recipes upload with an ambiguous git repo" do
|
|
28
28
|
def command_to_run(_) "recipes upload" end
|
29
29
|
it_should_behave_like "it requires an unambiguous git repo"
|
30
30
|
end
|
31
|
+
|
32
|
+
describe "ey recipes upload from a separate cookbooks directory" do
|
33
|
+
given "integration"
|
34
|
+
|
35
|
+
context "without any git remotes" do
|
36
|
+
define_git_repo "only cookbooks, no remotes" do |git_dir|
|
37
|
+
`git --git-dir "#{git_dir}/.git" remote`.split("\n").each do |remote|
|
38
|
+
`git --git-dir "#{git_dir}/.git" remote rm #{remote}`
|
39
|
+
end
|
40
|
+
|
41
|
+
git_dir.join("cookbooks").mkdir
|
42
|
+
File.open(git_dir.join("cookbooks/file"), "w"){|f| f << "stuff" }
|
43
|
+
end
|
44
|
+
|
45
|
+
use_git_repo "only cookbooks, no remotes"
|
46
|
+
|
47
|
+
it "takes the environment specified by -e" do
|
48
|
+
api_scenario "one app, one environment"
|
49
|
+
|
50
|
+
ey "recipes upload -e giblets"
|
51
|
+
@out.should =~ /Recipes uploaded successfully/
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context "with a git remote unrelated to any application" do
|
56
|
+
define_git_repo "only cookbooks, unrelated remotes" do |git_dir|
|
57
|
+
`git --git-dir "#{git_dir}/.git" remote`.split("\n").each do |remote|
|
58
|
+
`git --git-dir "#{git_dir}/.git" remote rm #{remote}`
|
59
|
+
end
|
60
|
+
|
61
|
+
`git remote add origin polly@pirate.example.com:wanna/cracker.git`
|
62
|
+
|
63
|
+
git_dir.join("cookbooks").mkdir
|
64
|
+
File.open(git_dir.join("cookbooks/file"), "w"){|f| f << "rawk" }
|
65
|
+
end
|
66
|
+
|
67
|
+
use_git_repo "only cookbooks, unrelated remotes"
|
68
|
+
|
69
|
+
it "takes the environment specified by -e" do
|
70
|
+
api_scenario "one app, one environment"
|
71
|
+
|
72
|
+
ey "recipes upload -e giblets"
|
73
|
+
@out.should =~ /Recipes uploaded successfully/
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
data/spec/ey/web/enable_spec.rb
CHANGED
@@ -18,4 +18,9 @@ describe "ey web enable" do
|
|
18
18
|
|
19
19
|
it_should_behave_like "it takes an environment name and an app name and an account name"
|
20
20
|
it_should_behave_like "it invokes engineyard-serverside"
|
21
|
+
|
22
|
+
it "fails when given a bad option" do
|
23
|
+
ey "web enable --lots --of --bogus --options", :expect_failure => true
|
24
|
+
@err.should include("Unknown switches")
|
25
|
+
end
|
21
26
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
9
|
+
- 3
|
10
|
+
version: 1.3.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- EY Cloud Team
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-22 00:00:00 -07:00
|
19
19
|
default_executable: ey
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -31,9 +31,9 @@ dependencies:
|
|
31
31
|
- 3
|
32
32
|
version: 0.14.3
|
33
33
|
requirement: *id001
|
34
|
-
type: :runtime
|
35
34
|
name: thor
|
36
35
|
prerelease: false
|
36
|
+
type: :runtime
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
@@ -46,9 +46,9 @@ dependencies:
|
|
46
46
|
- 4
|
47
47
|
version: "1.4"
|
48
48
|
requirement: *id002
|
49
|
-
type: :runtime
|
50
49
|
name: rest-client
|
51
50
|
prerelease: false
|
51
|
+
type: :runtime
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
53
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
@@ -62,9 +62,9 @@ dependencies:
|
|
62
62
|
- 2
|
63
63
|
version: 1.5.2
|
64
64
|
requirement: *id003
|
65
|
-
type: :runtime
|
66
65
|
name: highline
|
67
66
|
prerelease: false
|
67
|
+
type: :runtime
|
68
68
|
- !ruby/object:Gem::Dependency
|
69
69
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
70
70
|
none: false
|
@@ -76,9 +76,9 @@ dependencies:
|
|
76
76
|
- 0
|
77
77
|
version: "0"
|
78
78
|
requirement: *id004
|
79
|
-
type: :runtime
|
80
79
|
name: json_pure
|
81
80
|
prerelease: false
|
81
|
+
type: :runtime
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
@@ -92,9 +92,9 @@ dependencies:
|
|
92
92
|
- 4
|
93
93
|
version: 0.0.4
|
94
94
|
requirement: *id005
|
95
|
-
type: :runtime
|
96
95
|
name: escape
|
97
96
|
prerelease: false
|
97
|
+
type: :runtime
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
100
100
|
none: false
|
@@ -108,9 +108,9 @@ dependencies:
|
|
108
108
|
- 5
|
109
109
|
version: 1.3.5
|
110
110
|
requirement: *id006
|
111
|
-
type: :runtime
|
112
111
|
name: engineyard-serverside-adapter
|
113
112
|
prerelease: false
|
113
|
+
type: :runtime
|
114
114
|
description: This gem allows you to deploy your rails application to the Engine Yard cloud directly from the command line.
|
115
115
|
email: cloud@engineyard.com
|
116
116
|
executables:
|