taketo 0.0.10 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +14 -30
- data/README.md +4 -0
- data/Rakefile +4 -8
- data/VERSION +1 -1
- data/bin/taketo +5 -5
- data/lib/taketo/config_printer_visitor.rb +6 -22
- data/lib/taketo/config_traverser.rb +4 -33
- data/lib/taketo/config_validator.rb +1 -1
- data/lib/taketo/config_visitor.rb +15 -1
- data/lib/taketo/constructs/base_construct.rb +30 -6
- data/lib/taketo/constructs/config.rb +5 -0
- data/lib/taketo/constructs/environment.rb +6 -3
- data/lib/taketo/constructs/project.rb +3 -3
- data/lib/taketo/constructs/server.rb +3 -4
- data/lib/taketo/constructs.rb +6 -1
- data/lib/taketo/destination_resolver.rb +37 -52
- data/lib/taketo/dsl.rb +6 -3
- data/lib/taketo/printer.rb +29 -0
- data/lib/taketo/ssh_config_generator_visitor.rb +8 -22
- data/spec/acceptance/command_spec.rb +20 -0
- data/spec/acceptance/config_dsl_spec.rb +277 -0
- data/spec/acceptance/config_validation_spec.rb +109 -0
- data/spec/acceptance/connect_to_server_spec.rb +60 -0
- data/spec/acceptance/error_handling_spec.rb +31 -0
- data/spec/acceptance/generate_ssh_config_spec.rb +44 -0
- data/spec/acceptance/help_spec.rb +74 -0
- data/spec/acceptance/location_spec.rb +21 -0
- data/spec/acceptance_spec_helper.rb +71 -0
- data/spec/lib/taketo/config_traverser_spec.rb +20 -33
- data/spec/lib/taketo/config_validator_spec.rb +4 -4
- data/spec/lib/taketo/config_visitor_spec.rb +0 -4
- data/spec/lib/taketo/constructs/base_construct_spec.rb +37 -5
- data/spec/lib/taketo/constructs/environment_spec.rb +1 -1
- data/spec/lib/taketo/constructs/project_spec.rb +0 -6
- data/spec/lib/taketo/constructs/server_spec.rb +1 -3
- data/spec/lib/taketo/destination_resolver_spec.rb +21 -54
- data/spec/lib/taketo/dsl_spec.rb +46 -44
- data/spec/spec_helper.rb +1 -1
- data/spec/support/helpers/construct_spec_helper.rb +29 -0
- metadata +94 -82
- data/features/commands.feature +0 -36
- data/features/config.feature +0 -177
- data/features/config_validation.feature +0 -43
- data/features/connect_to_server.feature +0 -87
- data/features/default_server_config.feature +0 -41
- data/features/error_handling.feature +0 -29
- data/features/generate_ssh_config.feature +0 -44
- data/features/help.feature +0 -76
- data/features/step_definitions/main_steps.rb +0 -16
- data/features/support/env.rb +0 -14
metadata
CHANGED
@@ -1,89 +1,91 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: taketo
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Vladimir Yarotsky
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2012-12-04 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rspec
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '2.11'
|
22
|
-
type: :development
|
23
22
|
prerelease: false
|
24
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
|
-
requirements:
|
25
|
+
requirements:
|
27
26
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0.9'
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 21
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 11
|
32
|
+
version: "2.11"
|
38
33
|
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rake
|
39
37
|
prerelease: false
|
40
|
-
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
40
|
+
requirements:
|
43
41
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0.4'
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 25
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 9
|
47
|
+
version: "0.9"
|
54
48
|
type: :development
|
55
|
-
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.4'
|
62
|
-
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
63
51
|
name: simplecov
|
64
|
-
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
65
54
|
none: false
|
66
|
-
requirements:
|
55
|
+
requirements:
|
67
56
|
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 7
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
- 6
|
62
|
+
version: "0.6"
|
70
63
|
type: :development
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: open4
|
71
67
|
prerelease: false
|
72
|
-
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
69
|
none: false
|
74
|
-
requirements:
|
70
|
+
requirements:
|
75
71
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 9
|
74
|
+
segments:
|
75
|
+
- 1
|
76
|
+
- 3
|
77
|
+
version: "1.3"
|
78
|
+
type: :development
|
79
|
+
version_requirements: *id004
|
80
|
+
description: " Taketo is an utility to aid quick access to often used servers for web-developers.\n Taketo uses a config written in ruby using light DSL.\n See http://github.com/v-yarotsky/taketo for additional instructions\n"
|
81
81
|
email: vladimir.yarotksy@gmail.com
|
82
|
-
executables:
|
82
|
+
executables:
|
83
83
|
- taketo
|
84
84
|
extensions: []
|
85
|
+
|
85
86
|
extra_rdoc_files: []
|
86
|
-
|
87
|
+
|
88
|
+
files:
|
87
89
|
- bin/taketo
|
88
90
|
- lib/taketo/associated_nodes.rb
|
89
91
|
- lib/taketo/commands/ssh_command.rb
|
@@ -102,11 +104,21 @@ files:
|
|
102
104
|
- lib/taketo/constructs_factory.rb
|
103
105
|
- lib/taketo/destination_resolver.rb
|
104
106
|
- lib/taketo/dsl.rb
|
107
|
+
- lib/taketo/printer.rb
|
105
108
|
- lib/taketo/ssh_config_generator_visitor.rb
|
106
109
|
- lib/taketo/support/key_error.rb
|
107
110
|
- lib/taketo/support/named_nodes_collection.rb
|
108
111
|
- lib/taketo/support.rb
|
109
112
|
- lib/taketo.rb
|
113
|
+
- spec/acceptance/command_spec.rb
|
114
|
+
- spec/acceptance/config_dsl_spec.rb
|
115
|
+
- spec/acceptance/config_validation_spec.rb
|
116
|
+
- spec/acceptance/connect_to_server_spec.rb
|
117
|
+
- spec/acceptance/error_handling_spec.rb
|
118
|
+
- spec/acceptance/generate_ssh_config_spec.rb
|
119
|
+
- spec/acceptance/help_spec.rb
|
120
|
+
- spec/acceptance/location_spec.rb
|
121
|
+
- spec/acceptance_spec_helper.rb
|
110
122
|
- spec/integration/dsl_integration_spec.rb
|
111
123
|
- spec/lib/taketo/associated_nodes_spec.rb
|
112
124
|
- spec/lib/taketo/commands/ssh_command_spec.rb
|
@@ -131,16 +143,6 @@ files:
|
|
131
143
|
- spec/support/matchers/be_appropriate_construct_matcher.rb
|
132
144
|
- spec/support/matchers/enclose_scope_matcher.rb
|
133
145
|
- spec/support/matchers/have_accessor_matcher.rb
|
134
|
-
- features/commands.feature
|
135
|
-
- features/config.feature
|
136
|
-
- features/config_validation.feature
|
137
|
-
- features/connect_to_server.feature
|
138
|
-
- features/default_server_config.feature
|
139
|
-
- features/error_handling.feature
|
140
|
-
- features/generate_ssh_config.feature
|
141
|
-
- features/help.feature
|
142
|
-
- features/step_definitions/main_steps.rb
|
143
|
-
- features/support/env.rb
|
144
146
|
- Gemfile
|
145
147
|
- Gemfile.lock
|
146
148
|
- Rakefile
|
@@ -148,30 +150,40 @@ files:
|
|
148
150
|
- README.md
|
149
151
|
- VERSION
|
150
152
|
homepage: http://github.com/v-yarotsky/taketo
|
151
|
-
licenses:
|
153
|
+
licenses:
|
152
154
|
- MIT
|
153
155
|
post_install_message:
|
154
156
|
rdoc_options: []
|
155
|
-
|
157
|
+
|
158
|
+
require_paths:
|
156
159
|
- lib
|
157
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
160
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
158
161
|
none: false
|
159
|
-
requirements:
|
160
|
-
- -
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
|
163
|
-
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
hash: 3
|
166
|
+
segments:
|
167
|
+
- 0
|
168
|
+
version: "0"
|
169
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
170
|
none: false
|
165
|
-
requirements:
|
166
|
-
- -
|
167
|
-
- !ruby/object:Gem::Version
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
hash: 23
|
175
|
+
segments:
|
176
|
+
- 1
|
177
|
+
- 3
|
178
|
+
- 6
|
168
179
|
version: 1.3.6
|
169
180
|
requirements: []
|
181
|
+
|
170
182
|
rubyforge_project:
|
171
183
|
rubygems_version: 1.8.24
|
172
184
|
signing_key:
|
173
185
|
specification_version: 3
|
174
|
-
summary: A tiny helper utility to make access to servers eaiser for different projects
|
175
|
-
and environments
|
186
|
+
summary: A tiny helper utility to make access to servers eaiser for different projects and environments
|
176
187
|
test_files: []
|
188
|
+
|
177
189
|
has_rdoc:
|
data/features/commands.feature
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
Feature:
|
2
|
-
In order to be able to quickly run commands on my servers
|
3
|
-
As a developer
|
4
|
-
I want to have ability to create command shortcuts via config
|
5
|
-
or specify command directly
|
6
|
-
|
7
|
-
Background:
|
8
|
-
When I have the following config
|
9
|
-
"""
|
10
|
-
project :slots do
|
11
|
-
environment :staging do
|
12
|
-
server do
|
13
|
-
host "1.2.3.4"
|
14
|
-
location "/var/apps/slots"
|
15
|
-
command :console do
|
16
|
-
execute "rails c"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
"""
|
22
|
-
|
23
|
-
Scenario: Run explicit command
|
24
|
-
When I run taketo --dry-run --command "TERM=xterm-256color bash"
|
25
|
-
Then the output should contain
|
26
|
-
"""
|
27
|
-
ssh -t 1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging TERM=xterm-256color bash"
|
28
|
-
"""
|
29
|
-
|
30
|
-
Scenario: Run command defined in config
|
31
|
-
When I run taketo --dry-run --command console slots:staging
|
32
|
-
Then the output should contain
|
33
|
-
"""
|
34
|
-
ssh -t 1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging rails c"
|
35
|
-
"""
|
36
|
-
|
data/features/config.feature
DELETED
@@ -1,177 +0,0 @@
|
|
1
|
-
Feature: taketo config
|
2
|
-
In order to get rid of routineous ssh command calls
|
3
|
-
As a user
|
4
|
-
I want to be able configure taketo
|
5
|
-
|
6
|
-
Scenario: Shared server configs
|
7
|
-
When I have the following config
|
8
|
-
"""
|
9
|
-
shared_server_config :sc1 do
|
10
|
-
port 9999 #can contain any server config options
|
11
|
-
end
|
12
|
-
|
13
|
-
shared_server_config :sc2 do
|
14
|
-
location "/var/qux"
|
15
|
-
end
|
16
|
-
|
17
|
-
project :slots do
|
18
|
-
environment :staging do
|
19
|
-
server(:s1) { host "1.2.3.4"; include_shared_server_config(:sc1, :sc2) }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
"""
|
23
|
-
And I run taketo slots:staging:s1 --dry-run
|
24
|
-
Then the output should contain
|
25
|
-
"""
|
26
|
-
ssh -t -p 9999 1.2.3.4 "cd /var/qux; RAILS_ENV=staging bash"
|
27
|
-
"""
|
28
|
-
|
29
|
-
Scenario: Shared server configs with arguments
|
30
|
-
When I have the following config
|
31
|
-
"""
|
32
|
-
shared_server_config :sc_args1 do |port_num|
|
33
|
-
port port_num
|
34
|
-
end
|
35
|
-
|
36
|
-
shared_server_config :sc_args2 do |projects_root_folder, project_folder|
|
37
|
-
location File.join(projects_root_folder, project_folder)
|
38
|
-
end
|
39
|
-
|
40
|
-
project :slots do
|
41
|
-
environment :staging do
|
42
|
-
server(:s1) do
|
43
|
-
host "1.2.3.4"
|
44
|
-
include_shared_server_config(:sc_args1 => 9999, :sc_args2 => ['/var', 'qux'])
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
"""
|
49
|
-
And I run taketo slots:staging:s1 --dry-run
|
50
|
-
Then the output should contain
|
51
|
-
"""
|
52
|
-
ssh -t -p 9999 1.2.3.4 "cd /var/qux; RAILS_ENV=staging bash"
|
53
|
-
"""
|
54
|
-
|
55
|
-
Scenario: Set environment variables
|
56
|
-
When I have the following config
|
57
|
-
"""
|
58
|
-
project :slots do
|
59
|
-
environment :staging do
|
60
|
-
server do
|
61
|
-
host "1.2.3.4"
|
62
|
-
location "/var/apps/slots"
|
63
|
-
env :FOO => "the value"
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
"""
|
68
|
-
And I run taketo --dry-run
|
69
|
-
Then the output should contain
|
70
|
-
"""
|
71
|
-
RAILS_ENV=staging
|
72
|
-
"""
|
73
|
-
And the output should contain
|
74
|
-
"""
|
75
|
-
FOO=the\ value
|
76
|
-
"""
|
77
|
-
|
78
|
-
Scenario: Reopen config scopes
|
79
|
-
When I have the following config
|
80
|
-
"""
|
81
|
-
project :slots do
|
82
|
-
environment :staging do
|
83
|
-
server do
|
84
|
-
host "1.2.3.4"
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
project :slots do
|
90
|
-
environment :staging do
|
91
|
-
server do
|
92
|
-
env :FOO => "bar"
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
"""
|
97
|
-
And I run taketo slots:staging --dry-run
|
98
|
-
Then the output should match /ssh -t 1\.2\.3\.4 "(RAILS_ENV=staging FOO=bar|FOO=bar RAILS_ENV=staging) bash"/
|
99
|
-
|
100
|
-
Scenario: Unique server alias
|
101
|
-
When I have the following config
|
102
|
-
"""
|
103
|
-
project :slots do
|
104
|
-
environment :staging do
|
105
|
-
server :s1 do
|
106
|
-
host "1.2.3.4"
|
107
|
-
end
|
108
|
-
server :s2 do
|
109
|
-
global_alias :ss2
|
110
|
-
host "2.3.4.5"
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
"""
|
115
|
-
And I run taketo ss2 --dry-run
|
116
|
-
Then the output should contain
|
117
|
-
"""
|
118
|
-
ssh -t 2.3.4.5 "RAILS_ENV=staging bash"
|
119
|
-
"""
|
120
|
-
|
121
|
-
Scenario: Override default location specified for server
|
122
|
-
When I have the following config
|
123
|
-
"""
|
124
|
-
project :slots do
|
125
|
-
environment :staging do
|
126
|
-
server do
|
127
|
-
location '/var/foo'
|
128
|
-
host "1.2.3.4"
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
"""
|
133
|
-
When I run taketo --dry-run --directory /var/www slots:staging
|
134
|
-
Then the output should contain
|
135
|
-
"""
|
136
|
-
ssh -t 1.2.3.4 "cd /var/www; RAILS_ENV=staging bash"
|
137
|
-
"""
|
138
|
-
|
139
|
-
Scenario: Default server command
|
140
|
-
When I have the following config
|
141
|
-
"""
|
142
|
-
project :slots do
|
143
|
-
environment :staging do
|
144
|
-
server do
|
145
|
-
host "1.2.3.4"
|
146
|
-
|
147
|
-
default_command :tmux
|
148
|
-
|
149
|
-
command :tmux do
|
150
|
-
execute "tmux attach || tmux new-session"
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
"""
|
156
|
-
When I run taketo --dry-run slots:staging
|
157
|
-
Then the output should contain
|
158
|
-
"""
|
159
|
-
ssh -t 1.2.3.4 "RAILS_ENV=staging tmux attach || tmux new-session"
|
160
|
-
"""
|
161
|
-
When I have the following config
|
162
|
-
"""
|
163
|
-
project :slots do
|
164
|
-
environment :staging do
|
165
|
-
server do
|
166
|
-
host "1.2.3.4"
|
167
|
-
default_command "do_something"
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
"""
|
172
|
-
When I run taketo --dry-run slots:staging
|
173
|
-
Then the output should contain
|
174
|
-
"""
|
175
|
-
ssh -t 1.2.3.4 "RAILS_ENV=staging do_something"
|
176
|
-
"""
|
177
|
-
|
@@ -1,43 +0,0 @@
|
|
1
|
-
Feature:
|
2
|
-
In order to be able to use the piece of software
|
3
|
-
As a user
|
4
|
-
I want to be guided if there are any errors in my configuration
|
5
|
-
|
6
|
-
Scenario Outline: Config validation
|
7
|
-
When I have the following config
|
8
|
-
"""
|
9
|
-
<config>
|
10
|
-
"""
|
11
|
-
And I run taketo
|
12
|
-
Then the stderr should contain "<error>"
|
13
|
-
|
14
|
-
Examples:
|
15
|
-
| config | error |
|
16
|
-
| | There are no projects. Add some to your config (~/.taketo.rc.rb by default) |
|
17
|
-
| project(:foo) {} | Project foo: no environments |
|
18
|
-
| project(:foo) { environment(:bar) {} } | Environment foo:bar: no servers |
|
19
|
-
| project(:foo) { environment(:bar) { server {} }} | Server foo:bar:default: host is not defined |
|
20
|
-
|
21
|
-
Scenario: Global server alias clash
|
22
|
-
When I have the following config
|
23
|
-
"""
|
24
|
-
project(:foo) { environment(:bar) {
|
25
|
-
server(:s1) { host '1.2.3.4'; global_alias :a1 }
|
26
|
-
server(:s2) { host '2.3.4.5'; global_alias :a1 }
|
27
|
-
}}
|
28
|
-
"""
|
29
|
-
And I run taketo
|
30
|
-
Then the stderr should contain "Server foo:bar:s2: global alias 'a1' has already been taken by server foo:bar:s1"
|
31
|
-
|
32
|
-
Scenario: Bad command
|
33
|
-
When I have the following config
|
34
|
-
"""
|
35
|
-
project(:foo) { environment(:bar) {
|
36
|
-
server(:s1) { host '1.2.3.4'
|
37
|
-
command(:foo) {}
|
38
|
-
}
|
39
|
-
}}
|
40
|
-
"""
|
41
|
-
And I run taketo
|
42
|
-
Then the stderr should contain "Don't know what to execute on command foo"
|
43
|
-
|
@@ -1,87 +0,0 @@
|
|
1
|
-
Feature:
|
2
|
-
In order to be able to access my servers quickly
|
3
|
-
As a developer
|
4
|
-
I want to have a nifty little utility
|
5
|
-
configurable with simple DSL
|
6
|
-
|
7
|
-
Scenario: SSH to server
|
8
|
-
When I have the following config
|
9
|
-
"""
|
10
|
-
project :slots do
|
11
|
-
environment :staging do
|
12
|
-
server :s1 do
|
13
|
-
host "1.2.3.4"
|
14
|
-
user "deployer"
|
15
|
-
location "/var/apps/slots"
|
16
|
-
end
|
17
|
-
|
18
|
-
server :s2 do
|
19
|
-
host "2.3.4.5"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
"""
|
25
|
-
And I run taketo --dry-run slots:staging:s1
|
26
|
-
Then the output should contain
|
27
|
-
"""
|
28
|
-
ssh -t deployer@1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging bash"
|
29
|
-
"""
|
30
|
-
|
31
|
-
Scenario: SSH to the only server
|
32
|
-
When I have the following config
|
33
|
-
"""
|
34
|
-
project :slots do
|
35
|
-
environment :staging do
|
36
|
-
server do
|
37
|
-
host "1.2.3.4"
|
38
|
-
location "/var/apps/slots"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
"""
|
43
|
-
And I run taketo --dry-run
|
44
|
-
Then the output should contain
|
45
|
-
"""
|
46
|
-
ssh -t 1.2.3.4 "cd /var/apps/slots; RAILS_ENV=staging bash"
|
47
|
-
"""
|
48
|
-
|
49
|
-
Scenario: Default destination
|
50
|
-
When I have the following config
|
51
|
-
"""
|
52
|
-
default_destination "slots:staging:s2"
|
53
|
-
project :slots do
|
54
|
-
environment :staging do
|
55
|
-
server :s1 do
|
56
|
-
host "1.2.3.4"
|
57
|
-
end
|
58
|
-
server :s2 do
|
59
|
-
host "2.3.4.5"
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
"""
|
64
|
-
And I run taketo --dry-run
|
65
|
-
Then the output should contain
|
66
|
-
"""
|
67
|
-
ssh -t 2.3.4.5 "RAILS_ENV=staging bash"
|
68
|
-
"""
|
69
|
-
|
70
|
-
Scenario: SSH key file
|
71
|
-
When I have the following config
|
72
|
-
"""
|
73
|
-
project :slots do
|
74
|
-
environment :staging do
|
75
|
-
server do
|
76
|
-
identity_file "/home/gor/.ssh/foo bar"
|
77
|
-
host "2.3.4.5"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
"""
|
82
|
-
And I run taketo --dry-run
|
83
|
-
Then the output should contain
|
84
|
-
"""
|
85
|
-
ssh -t -i /home/gor/.ssh/foo\ bar 2.3.4.5 "RAILS_ENV=staging bash"
|
86
|
-
"""
|
87
|
-
|
@@ -1,41 +0,0 @@
|
|
1
|
-
Feature: taketo config's default server config
|
2
|
-
In order to reduce duplication
|
3
|
-
As a taketo user
|
4
|
-
I want to be able set default configs for servers in particular scopes
|
5
|
-
|
6
|
-
Background:
|
7
|
-
When I have the following config
|
8
|
-
"""
|
9
|
-
default_server_config do
|
10
|
-
env :FOO => 'bar'
|
11
|
-
end
|
12
|
-
|
13
|
-
project :slots do
|
14
|
-
default_server_config do
|
15
|
-
location '/mnt/apps'
|
16
|
-
end
|
17
|
-
|
18
|
-
environment :staging do
|
19
|
-
server :s1 do
|
20
|
-
host "1.2.3.4"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
project :shoes do
|
26
|
-
environment :production do
|
27
|
-
server do
|
28
|
-
host "2.3.4.5"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
"""
|
33
|
-
|
34
|
-
Scenario: Global default server config
|
35
|
-
When I run taketo shoes --dry-run
|
36
|
-
Then the output should match /ssh -t 2\.3\.4\.5 "(RAILS_ENV=production FOO=bar|FOO=bar RAILS_ENV=production) bash"/
|
37
|
-
|
38
|
-
Scenario: Project default server config
|
39
|
-
When I run taketo slots --dry-run
|
40
|
-
Then the output should match /ssh -t 1\.2\.3\.4 "cd .mnt.apps; (RAILS_ENV=staging FOO=bar|FOO=bar RAILS_ENV=staging) bash"/
|
41
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
Feature:
|
2
|
-
To be able to troubleshoot my config issues quickly
|
3
|
-
As a user
|
4
|
-
I want to see meaningful errors when I accidentally specify bad location
|
5
|
-
|
6
|
-
Background:
|
7
|
-
When I have the following config
|
8
|
-
"""
|
9
|
-
default_destination "slots:staging:s2"
|
10
|
-
project :slots do
|
11
|
-
environment :staging do
|
12
|
-
server :s1 do
|
13
|
-
host "1.2.3.4"
|
14
|
-
end
|
15
|
-
server :s2 do
|
16
|
-
host "2.3.4.5"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
"""
|
21
|
-
|
22
|
-
Scenario: Non-existent location
|
23
|
-
And I run taketo slots:staging:qqq --dry-run
|
24
|
-
Then the stderr should contain "server qqq not found for environment staging"
|
25
|
-
|
26
|
-
Scenario: Ambiguous location
|
27
|
-
And I run taketo slots:staging --dry-run
|
28
|
-
Then the stderr should contain "There are multiple servers for environment staging: s1, s2"
|
29
|
-
|