cliprompt 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +5 -2
- data/example.rb +16 -0
- data/lib/cliprompt/optionset.rb +3 -4
- data/lib/cliprompt/version.rb +1 -1
- data/lib/cliprompt.rb +10 -1
- data/spec/lib/cliprompt_spec.rb +18 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad8694ae5f71787a7a5e51c1451f7f15ce16abe4
|
4
|
+
data.tar.gz: 1e41e408ad7acf5c27c3e7e031e4ee142abd5c59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f66243c356834abe4dbb25e165496453121fd536e16d9f4ed3127618b2566a2f3d88f8d2a8cba76d1361b4a5b5bd02bf0c88c46395983b5b2115e60c666727b
|
7
|
+
data.tar.gz: 992a171945a441a158ebd2ec25863944a12620d8da79322838029b62c4fc065e46f0b34ca17320f62f4b206dc591ef64c717cbb49862d5d9de534d9ac4cd8c6a
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
Cliprompt Changelog
|
2
2
|
=====================
|
3
3
|
|
4
|
+
v0.0.3 - 2014-05-20
|
5
|
+
-------------
|
6
|
+
|
7
|
+
- relax the boolean check so 1 and 0 can be used for yes and no (especially for env vars)
|
8
|
+
- added a `guess` method to have env var override question if set
|
9
|
+
|
4
10
|
v0.0.2 - 2014-05-20
|
5
11
|
-----------
|
6
12
|
|
data/README.md
CHANGED
@@ -7,13 +7,13 @@ Cliprompt
|
|
7
7
|
[](https://gemnasium.com/mose/cliprompt)
|
8
8
|
[](https://codeclimate.com/github/mose/cliprompt)
|
9
9
|
|
10
|
-
This library provides a simple DSL for managing user interaction in a CLI application. Still under development, not stable yet.
|
10
|
+
This library provides a simple DSL for managing user interaction in a CLI application. Still under development, not stable yet. Check the [Changelog](https://github.com/mose/cliprompt/blob/master/CHANGELOG.md) to see what is in already.
|
11
11
|
|
12
12
|
Features
|
13
13
|
----------
|
14
14
|
|
15
15
|
- manages questions, choices, default values, yes/no values (done)
|
16
|
-
- makes possible to have env vars set for defaults (
|
16
|
+
- makes possible to have env vars set for defaults (done)
|
17
17
|
|
18
18
|
Usage
|
19
19
|
----------
|
@@ -33,6 +33,9 @@ class Myclass
|
|
33
33
|
@url = ask "What is the url of Myclass?"
|
34
34
|
@ssl = ask "Is it using SSL?", 'y/N'
|
35
35
|
@age = ask "What is the age of the captain?", [22,33,=44,55]
|
36
|
+
# if you set set ENV['SOMEVAR'], it will override the answer and won't display the question
|
37
|
+
# in such case you still can use normal options and nev var will be validated against it (for boolean or choices setup)
|
38
|
+
@age = guess 'SOMEVAR', "What is the age of the captain?", [22,33,=44,55]
|
36
39
|
end
|
37
40
|
end
|
38
41
|
```
|
data/example.rb
CHANGED
@@ -32,12 +32,28 @@ class Myclass
|
|
32
32
|
show 'a list with default?', choices: ['22', 33, '=44', '55']
|
33
33
|
end
|
34
34
|
|
35
|
+
def guessit
|
36
|
+
puts '-------------------'
|
37
|
+
showguess 'SOMEVAR', "what is your var?"
|
38
|
+
showguess 'SOMEVAR', "what is your var?", 42
|
39
|
+
showguess 'SOMEVAR', "what is your var?", boolean: true
|
40
|
+
showguess 'SOMEVAR', "what is your var?", [12, 'aa']
|
41
|
+
end
|
42
|
+
|
35
43
|
def show(*args)
|
36
44
|
it = ask *args
|
37
45
|
puts "-- returned #{it.inspect}"
|
38
46
|
puts
|
39
47
|
end
|
48
|
+
|
49
|
+
def showguess(*args)
|
50
|
+
it = guess *args
|
51
|
+
puts "-- returned #{it.inspect}"
|
52
|
+
puts
|
53
|
+
end
|
54
|
+
|
40
55
|
end
|
41
56
|
|
42
57
|
m = Myclass.new
|
58
|
+
m.guessit
|
43
59
|
m.askit
|
data/lib/cliprompt/optionset.rb
CHANGED
@@ -56,7 +56,7 @@ module Cliprompt
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def parse_string(arg)
|
59
|
-
if arg.
|
59
|
+
if arg.match /^[yY1](es)?(\/)?[nN0](o)?/
|
60
60
|
@boolean = true
|
61
61
|
if /y(es)?(\/)?N/.match arg
|
62
62
|
@default = false
|
@@ -99,9 +99,8 @@ module Cliprompt
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def check_boolean(question, answer)
|
102
|
-
answer
|
103
|
-
|
104
|
-
!/^y(es)?$/.match(answer).nil?
|
102
|
+
return ask_again(question, Cliprompt::MSG_YES_OR_NO) unless /^([yY1](es)?|[nN0](o)?)$/.match(answer)
|
103
|
+
!/^[yY1](es)?$/.match(answer).nil?
|
105
104
|
end
|
106
105
|
|
107
106
|
def check_choices(question, answer)
|
data/lib/cliprompt/version.rb
CHANGED
data/lib/cliprompt.rb
CHANGED
@@ -8,7 +8,7 @@ module Cliprompt
|
|
8
8
|
module_function
|
9
9
|
|
10
10
|
MSG_MANDATORY_TEXT = "Sorry you need to fill that information."
|
11
|
-
MSG_YES_OR_NO = "You need to answer by yes, no, y or
|
11
|
+
MSG_YES_OR_NO = "You need to answer by yes, no, y, n, 1 or 0."
|
12
12
|
MSG_CHOSE_IN_LIST = "You need to chose between the available options."
|
13
13
|
|
14
14
|
def ask(question, *options)
|
@@ -23,6 +23,15 @@ module Cliprompt
|
|
23
23
|
opts.validate(question, answer)
|
24
24
|
end
|
25
25
|
|
26
|
+
def guess(env, question, *options)
|
27
|
+
opts = Optionset.new *options
|
28
|
+
if ENV[env]
|
29
|
+
opts.validate(question, ENV[env])
|
30
|
+
else
|
31
|
+
ask question, opts
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
26
35
|
def say(message)
|
27
36
|
output.puts message
|
28
37
|
end
|
data/spec/lib/cliprompt_spec.rb
CHANGED
@@ -33,6 +33,24 @@ describe Cliprompt do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
describe '.guess' do
|
37
|
+
Given(:question) { 'wazza?' }
|
38
|
+
Given(:env_var) { 'SOMEVAR' }
|
39
|
+
Given(:args) { }
|
40
|
+
context 'when env var is provided,' do
|
41
|
+
When(:env_value) { 'xxx' }
|
42
|
+
When { ENV[env_var] = env_value }
|
43
|
+
Then { expect(subject.guess(env_var, question, args)).to eq env_value }
|
44
|
+
And { ENV.delete(env_var) }
|
45
|
+
end
|
46
|
+
context 'when env var is not provided,' do
|
47
|
+
When(:answer) { 'ooo' }
|
48
|
+
When { input.stub(:gets).and_return answer }
|
49
|
+
Then { expect(subject.guess(env_var, question, args)).to eq answer }
|
50
|
+
And { expect(output.string).to eq "#{question} " }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
36
54
|
describe '.say' do
|
37
55
|
Given(:msg) { "hah" }
|
38
56
|
When { subject.say msg }
|