easy_app_helper 4.1.2 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/easy_app_helper.rb +1 -0
- data/lib/easy_app_helper/input.rb +56 -0
- data/lib/easy_app_helper/version.rb +1 -1
- data/spec/input_spec.rb +55 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44b64f48b34bca054b777aa595b25223bf8841e5
|
4
|
+
data.tar.gz: e9ee7e8d49bd806b54be25b6a309e3def700be8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1b76ac90c234ad895e7f4b1c4be83ab04e14b88e6e94876a4d9b3a8ee2ae15d5d7cda8f617677f8f34eeaa125a54f88e35ec406b18536d99c64ed845436f93e
|
7
|
+
data.tar.gz: d35c30b487b3c0ed747216f20d07b4279f34eff95635e9255a64de4dee9c3951d584d8278dad274f9d76ce77ad7d98153c461dc86b18949d6a2c821122ed21ea
|
data/lib/easy_app_helper.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
module EasyAppHelper
|
2
|
+
|
3
|
+
module Input
|
4
|
+
|
5
|
+
DEFAULT_CONFIRMATION_CHOICES = {
|
6
|
+
true => %w(Yes y),
|
7
|
+
false => %w(No n)
|
8
|
+
}
|
9
|
+
|
10
|
+
def get_user_confirmation(choices: DEFAULT_CONFIRMATION_CHOICES,
|
11
|
+
default_choice: 'No',
|
12
|
+
prompt: 'Are you sure ?',
|
13
|
+
strict: false)
|
14
|
+
|
15
|
+
raise 'Invalid choices !' unless choices.is_a? Hash
|
16
|
+
values = choices.values.flatten
|
17
|
+
raise "Invalid default choice '#{default_choice}' !" unless values.include? default_choice
|
18
|
+
return true if EasyAppHelper.config[:auto]
|
19
|
+
full_prompt = '%s (%s): ' % [prompt, choices_string(values, default_choice)]
|
20
|
+
STDOUT.print full_prompt
|
21
|
+
STDOUT.flush
|
22
|
+
input = nil
|
23
|
+
until values.include? input
|
24
|
+
input = STDIN.gets.chomp
|
25
|
+
input = default_choice if input.nil? || input.empty?
|
26
|
+
unless strict
|
27
|
+
input = default_choice unless values.include? input
|
28
|
+
end
|
29
|
+
end
|
30
|
+
choices.each_pair do |res, possible_choices|
|
31
|
+
return res if possible_choices.include? input
|
32
|
+
end
|
33
|
+
raise 'Something wrong happened !'
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def get_user_input(prompt, default=nil)
|
38
|
+
full_prompt = (default.nil? or default.empty?) ? "#{prompt}: " : "#{prompt} (default: #{default}): "
|
39
|
+
STDOUT.print full_prompt
|
40
|
+
STDOUT.flush
|
41
|
+
STDIN.gets.chomp
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
|
47
|
+
def choices_string(choices, default_choice, highlight= %w([ ]))
|
48
|
+
choices
|
49
|
+
.map { |choice| choice == default_choice ? "#{highlight.first}#{choice}#{highlight.last}" : choice }
|
50
|
+
.join '/'
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/spec/input_spec.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe EasyAppHelper::Input do
|
5
|
+
|
6
|
+
subject {
|
7
|
+
o = Object.new.extend EasyAppHelper::Input
|
8
|
+
o
|
9
|
+
}
|
10
|
+
|
11
|
+
it 'should prompt user for confirmation' do
|
12
|
+
described_class::DEFAULT_CONFIRMATION_CHOICES.each_pair do |expected_result, choices|
|
13
|
+
choices.each do |choice|
|
14
|
+
expect(STDOUT).to receive(:print)
|
15
|
+
expect(STDIN).to receive(:gets).and_return(choice)
|
16
|
+
expect(subject.get_user_confirmation).to be expected_result
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when not in strict mode' do
|
22
|
+
|
23
|
+
it 'should default to default choice if bullshit is entered' do
|
24
|
+
expect(STDOUT).to receive(:print)
|
25
|
+
expect(STDIN).to receive(:gets).and_return('bullshit')
|
26
|
+
expect(subject.get_user_confirmation).to be false
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when in strict mode' do
|
32
|
+
|
33
|
+
it 'should re-ask until bullshit is not entered' do
|
34
|
+
expect(STDOUT).to receive(:print)
|
35
|
+
expect(STDIN).to receive(:gets).and_return('bullshit')
|
36
|
+
expect(STDIN).to receive(:gets).and_return('bullshit')
|
37
|
+
expect(STDIN).to receive(:gets).and_return('bullshit')
|
38
|
+
expect(STDIN).to receive(:gets).and_return('y')
|
39
|
+
expect(subject.get_user_confirmation strict: true).to be true
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when user passes --auto to command line' do
|
45
|
+
|
46
|
+
it 'should bypass the question and return true' do
|
47
|
+
expect(EasyAppHelper.config).to receive(:[]).with(:auto).and_return(true)
|
48
|
+
expect(subject.get_user_confirmation).to be true
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_app_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- L.Briais
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- lib/easy_app_helper/config.rb
|
114
114
|
- lib/easy_app_helper/config/compatibility.rb
|
115
115
|
- lib/easy_app_helper/config/initializer.rb
|
116
|
+
- lib/easy_app_helper/input.rb
|
116
117
|
- lib/easy_app_helper/logger/initializer.rb
|
117
118
|
- lib/easy_app_helper/logger/wrapper.rb
|
118
119
|
- lib/easy_app_helper/managed_logger.rb
|
@@ -136,6 +137,7 @@ files:
|
|
136
137
|
- lib/tasks/template_manager.rb
|
137
138
|
- spec/config_spec.rb
|
138
139
|
- spec/easy_app_helper_spec.rb
|
140
|
+
- spec/input_spec.rb
|
139
141
|
- spec/logger_spec.rb
|
140
142
|
- spec/processes/base_spec.rb
|
141
143
|
- spec/spec_helper.rb
|
@@ -175,6 +177,7 @@ summary: Provides cool helpers to your application, including configuration and
|
|
175
177
|
test_files:
|
176
178
|
- spec/config_spec.rb
|
177
179
|
- spec/easy_app_helper_spec.rb
|
180
|
+
- spec/input_spec.rb
|
178
181
|
- spec/logger_spec.rb
|
179
182
|
- spec/processes/base_spec.rb
|
180
183
|
- spec/spec_helper.rb
|