stairs 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +12 -10
- data/bin/stairs +16 -0
- data/lib/stairs/configuration.rb +5 -0
- data/lib/stairs/interactive_configuration.rb +14 -2
- data/lib/stairs/runner.rb +8 -0
- data/lib/stairs/step.rb +5 -7
- data/lib/stairs/tasks.rb +1 -2
- data/lib/stairs/version.rb +1 -1
- data/lib/stairs.rb +5 -0
- data/spec/lib/configuration_spec.rb +12 -1
- data/spec/lib/stairs/interactive_configuration_spec.rb +10 -1
- data/spec/lib/stairs/runner_spec.rb +26 -0
- data/spec/lib/stairs/step_spec.rb +18 -19
- data/spec/spec_helper.rb +2 -0
- data/spec/support/configuration_helper.rb +5 -0
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e22ee09384364f5f56adf9797d39f011a3cd9f99
|
4
|
+
data.tar.gz: a28246d9990d4e12ad7a7823ac386a3af1ef8d07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acecec427e75b4a218174046155a130837d6f69fd41b18ded6fe4b3de121088051b5339a4f107c83feb8d58c3435c05a10dff1cbbc8fc1a07b44d842fa1995d5
|
7
|
+
data.tar.gz: d0b036abcd2ea50371cf2ed69b6785f74ef79c0194b655c2e4604f9c6f9a9ecc310a20a2b9627eae1a37088a0874aa3595fc6a43e1eff20156f12111ba67ee8a
|
data/README.md
CHANGED
@@ -44,19 +44,29 @@ require "stairs/tasks"
|
|
44
44
|
|
45
45
|
## Usage
|
46
46
|
|
47
|
+
### Basic
|
48
|
+
|
47
49
|
In an app with a `setup.rb`, just run the rake task:
|
48
50
|
|
49
51
|
```
|
50
52
|
$ rake newb
|
51
53
|
```
|
52
54
|
|
55
|
+
### Advanced
|
56
|
+
|
57
|
+
If you want more control, use the `stairs` command line utility:
|
58
|
+
|
59
|
+
```
|
60
|
+
$ stairs --help
|
61
|
+
Usage: stairs [options]
|
62
|
+
--use-defaults Use defaults when available
|
63
|
+
```
|
64
|
+
|
53
65
|
## Defining scripts
|
54
66
|
|
55
67
|
A script composes many steps that setup a project.
|
56
68
|
|
57
69
|
```ruby
|
58
|
-
bundle
|
59
|
-
|
60
70
|
setup :secret_token
|
61
71
|
|
62
72
|
setup :s3
|
@@ -104,11 +114,6 @@ write_line "more: false", "config/settings.yml"
|
|
104
114
|
|
105
115
|
### Misc helpers
|
106
116
|
|
107
|
-
Run bundle to install gems
|
108
|
-
```ruby
|
109
|
-
bundle
|
110
|
-
```
|
111
|
-
|
112
117
|
Run rake tasks
|
113
118
|
```ruby
|
114
119
|
rake "task_name"
|
@@ -166,9 +171,6 @@ this:
|
|
166
171
|
$ rake newb
|
167
172
|
Looks like you're using rbenv to manage environment variables. Is this correct? (Y/N): Y
|
168
173
|
= Running script setup.rb
|
169
|
-
== Running bundle
|
170
|
-
...
|
171
|
-
== Completed bundle
|
172
174
|
== Running S3
|
173
175
|
AWS access key: 39u39d9u291
|
174
176
|
AWS secret: 19jd920i10is0i01i0s01ks0kfknkje
|
data/bin/stairs
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "optparse"
|
4
|
+
require "stairs"
|
5
|
+
|
6
|
+
Stairs.configure do |config|
|
7
|
+
OptionParser.new do |options|
|
8
|
+
options.banner = "Usage: stairs [options]"
|
9
|
+
|
10
|
+
options.on("--use-defaults", "Use defaults when available") do |value|
|
11
|
+
config.use_defaults = value
|
12
|
+
end
|
13
|
+
end.parse!
|
14
|
+
end
|
15
|
+
|
16
|
+
Stairs::Runner.new.run!
|
data/lib/stairs/configuration.rb
CHANGED
@@ -4,9 +4,19 @@ module Stairs
|
|
4
4
|
description "Interactive prompt for configuring Stairs"
|
5
5
|
|
6
6
|
def run!
|
7
|
+
if Stairs.configuration.use_defaults
|
8
|
+
use_recommended_adapter!
|
9
|
+
else
|
10
|
+
configure_env_adapter
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def configure_env_adapter
|
7
17
|
choice prompt do |yes|
|
8
18
|
if yes
|
9
|
-
|
19
|
+
use_recommended_adapter!
|
10
20
|
else
|
11
21
|
choice "Which would you prefer?", adapter_names do |name|
|
12
22
|
adapter_class = Stairs::EnvAdapters::ADAPTERS[name.to_sym]
|
@@ -16,7 +26,9 @@ module Stairs
|
|
16
26
|
end
|
17
27
|
end
|
18
28
|
|
19
|
-
|
29
|
+
def use_recommended_adapter!
|
30
|
+
Stairs.configuration.env_adapter = recommended_adapter.new
|
31
|
+
end
|
20
32
|
|
21
33
|
def recommended_adapter
|
22
34
|
@recommended_adapter ||= Stairs::EnvAdapters.recommended_adapter
|
data/lib/stairs/step.rb
CHANGED
@@ -40,8 +40,12 @@ module Stairs
|
|
40
40
|
prompt << " (leave blank for #{options[:default]})" if options[:default]
|
41
41
|
prompt << ": "
|
42
42
|
|
43
|
-
Stairs
|
43
|
+
if Stairs.configuration.use_defaults && options[:default]
|
44
44
|
options[:default]
|
45
|
+
else
|
46
|
+
Stairs::Util::CLI.collect(prompt.blue, required: required) ||
|
47
|
+
options[:default]
|
48
|
+
end
|
45
49
|
end
|
46
50
|
|
47
51
|
# Prompt user to make a choice
|
@@ -49,12 +53,6 @@ module Stairs
|
|
49
53
|
Choice.new(*args, &block).run
|
50
54
|
end
|
51
55
|
|
52
|
-
def bundle
|
53
|
-
stairs_info "== Running bundle"
|
54
|
-
system "bundle"
|
55
|
-
stairs_info "== Completed bundle"
|
56
|
-
end
|
57
|
-
|
58
56
|
def rake(task)
|
59
57
|
stairs_info "== Running #{task}"
|
60
58
|
system "rake #{task}"
|
data/lib/stairs/tasks.rb
CHANGED
data/lib/stairs/version.rb
CHANGED
data/lib/stairs.rb
CHANGED
@@ -10,6 +10,7 @@ module Stairs
|
|
10
10
|
autoload :Configuration, "stairs/configuration"
|
11
11
|
autoload :InteractiveConfiguration, "stairs/interactive_configuration"
|
12
12
|
autoload :Util, "stairs/util"
|
13
|
+
autoload :Runner, "stairs/runner"
|
13
14
|
|
14
15
|
class << self
|
15
16
|
def configure
|
@@ -19,6 +20,10 @@ module Stairs
|
|
19
20
|
def configuration
|
20
21
|
@configuration ||= Configuration.new
|
21
22
|
end
|
23
|
+
|
24
|
+
def reset_configuration!
|
25
|
+
@configuration = Configuration.new
|
26
|
+
end
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
@@ -8,5 +8,16 @@ describe Stairs::Configuration do
|
|
8
8
|
subject.env_adapter = "test"
|
9
9
|
expect(subject.env_adapter).to eq "test"
|
10
10
|
end
|
11
|
+
|
12
|
+
describe "use_defaults to automatically use default values" do
|
13
|
+
it "defaults to false" do
|
14
|
+
expect(subject.use_defaults).to eq false
|
15
|
+
end
|
16
|
+
|
17
|
+
it "allows for configuration" do
|
18
|
+
subject.use_defaults = true
|
19
|
+
expect(subject.use_defaults).to eq true
|
20
|
+
end
|
21
|
+
end
|
11
22
|
end
|
12
|
-
end
|
23
|
+
end
|
@@ -32,5 +32,14 @@ describe Stairs::InteractiveConfiguration do
|
|
32
32
|
follow_prompts("N", "dotenv") { subject.run! }
|
33
33
|
expect(Stairs.configuration.env_adapter).to be_a Stairs::EnvAdapters::Dotenv
|
34
34
|
end
|
35
|
+
|
36
|
+
context "when Stairs is configured to use defaults" do
|
37
|
+
before { Stairs.configuration.use_defaults = true }
|
38
|
+
|
39
|
+
it "uses the default adapter without asking" do
|
40
|
+
subject.run!
|
41
|
+
expect(Stairs.configuration.env_adapter).to be_a Stairs::EnvAdapters::Rbenv
|
42
|
+
end
|
43
|
+
end
|
35
44
|
end
|
36
|
-
end
|
45
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Stairs::Runner do
|
4
|
+
describe "#run!" do
|
5
|
+
let(:script_double) { double("script", run!: true) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
# Stub things as to not block IO
|
9
|
+
Stairs::InteractiveConfiguration.any_instance.stub :run!
|
10
|
+
Stairs::Script.any_instance.stub :run!
|
11
|
+
Stairs::Script.stub(:new).and_return(script_double)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "runs the interactive configuration" do
|
15
|
+
Stairs::InteractiveConfiguration.any_instance.should_receive(:run!)
|
16
|
+
subject.run!
|
17
|
+
end
|
18
|
+
|
19
|
+
it "runs the setup.rb script" do
|
20
|
+
Stairs::Script.should_receive(:new).with("setup.rb").and_return(script_double)
|
21
|
+
script_double.should_receive(:run!)
|
22
|
+
|
23
|
+
subject.run!
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -121,6 +121,24 @@ describe Stairs::Step do
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
|
+
context "Stairs is configured to use defaults automatically" do
|
125
|
+
before { Stairs.configuration.use_defaults = true }
|
126
|
+
|
127
|
+
context "but no default is provided" do
|
128
|
+
it "prompts for input as usual" do
|
129
|
+
follow_prompts "here ya go" do
|
130
|
+
expect(subject.provide("Gimme")).to eq "here ya go"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
context "and a default is provided" do
|
136
|
+
it "returns the default without prompting" do
|
137
|
+
expect(subject.provide("Gimme", default: "adefault")).to eq "adefault"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
124
142
|
context "with a default" do
|
125
143
|
def call_method
|
126
144
|
subject.provide "Gimme", default: "adefault"
|
@@ -213,25 +231,6 @@ describe Stairs::Step do
|
|
213
231
|
end
|
214
232
|
end
|
215
233
|
|
216
|
-
describe "#bundle" do
|
217
|
-
before { subject.stub system: true }
|
218
|
-
|
219
|
-
it "outputs lead-in message" do
|
220
|
-
output = capture_stdout { subject.bundle }
|
221
|
-
expect(output).to include "== Running bundle"
|
222
|
-
end
|
223
|
-
|
224
|
-
it "runs bundle" do
|
225
|
-
subject.should_receive(:system).with("bundle")
|
226
|
-
subject.bundle
|
227
|
-
end
|
228
|
-
|
229
|
-
it "outputs completed message" do
|
230
|
-
output = capture_stdout { subject.bundle }
|
231
|
-
expect(output).to include "== Completed bundle"
|
232
|
-
end
|
233
|
-
end
|
234
|
-
|
235
234
|
describe "#rake" do
|
236
235
|
before { subject.stub system: true }
|
237
236
|
|
data/spec/spec_helper.rb
CHANGED
@@ -16,7 +16,9 @@ RSpec.configure do |config|
|
|
16
16
|
config.filter_run :focus
|
17
17
|
|
18
18
|
config.include MockStdio
|
19
|
+
config.include ConfigurationHelper
|
19
20
|
|
20
21
|
config.before(:all, &:silence_output)
|
21
22
|
config.after(:all, &:enable_output)
|
23
|
+
config.after(:each, &:reset_configuration)
|
22
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stairs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- patbenatar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -212,7 +212,8 @@ description: It's a pain to setup new developers. Stairs is a utility and framew
|
|
212
212
|
prompts for everything else.
|
213
213
|
email:
|
214
214
|
- nick@gophilosophie.com
|
215
|
-
executables:
|
215
|
+
executables:
|
216
|
+
- stairs
|
216
217
|
extensions: []
|
217
218
|
extra_rdoc_files: []
|
218
219
|
files:
|
@@ -225,6 +226,7 @@ files:
|
|
225
226
|
- LICENSE.txt
|
226
227
|
- README.md
|
227
228
|
- Rakefile
|
229
|
+
- bin/stairs
|
228
230
|
- lib/stairs.rb
|
229
231
|
- lib/stairs/configuration.rb
|
230
232
|
- lib/stairs/env_adapters.rb
|
@@ -233,6 +235,7 @@ files:
|
|
233
235
|
- lib/stairs/env_adapters/rvm.rb
|
234
236
|
- lib/stairs/interactive_configuration.rb
|
235
237
|
- lib/stairs/railtie.rb
|
238
|
+
- lib/stairs/runner.rb
|
236
239
|
- lib/stairs/script.rb
|
237
240
|
- lib/stairs/step.rb
|
238
241
|
- lib/stairs/steps.rb
|
@@ -250,12 +253,14 @@ files:
|
|
250
253
|
- spec/lib/stairs/env_adapters/rvm_spec.rb
|
251
254
|
- spec/lib/stairs/env_adapters_spec.rb
|
252
255
|
- spec/lib/stairs/interactive_configuration_spec.rb
|
256
|
+
- spec/lib/stairs/runner_spec.rb
|
253
257
|
- spec/lib/stairs/script_spec.rb
|
254
258
|
- spec/lib/stairs/step_spec.rb
|
255
259
|
- spec/lib/stairs/steps/secret_token_spec.rb
|
256
260
|
- spec/lib/stairs/util/cli_spec.rb
|
257
261
|
- spec/lib/stairs/util/file_mutation_spec.rb
|
258
262
|
- spec/spec_helper.rb
|
263
|
+
- spec/support/configuration_helper.rb
|
259
264
|
- stairs.gemspec
|
260
265
|
- templates/postgresql/database.yml
|
261
266
|
homepage: http://github.com/patbenatar/stairs
|
@@ -289,9 +294,11 @@ test_files:
|
|
289
294
|
- spec/lib/stairs/env_adapters/rvm_spec.rb
|
290
295
|
- spec/lib/stairs/env_adapters_spec.rb
|
291
296
|
- spec/lib/stairs/interactive_configuration_spec.rb
|
297
|
+
- spec/lib/stairs/runner_spec.rb
|
292
298
|
- spec/lib/stairs/script_spec.rb
|
293
299
|
- spec/lib/stairs/step_spec.rb
|
294
300
|
- spec/lib/stairs/steps/secret_token_spec.rb
|
295
301
|
- spec/lib/stairs/util/cli_spec.rb
|
296
302
|
- spec/lib/stairs/util/file_mutation_spec.rb
|
297
303
|
- spec/spec_helper.rb
|
304
|
+
- spec/support/configuration_helper.rb
|