cliprompt 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Dependency Status](https://gemnasium.com/mose/cliprompt.svg)](https://gemnasium.com/mose/cliprompt)
|
8
8
|
[![Code Climate](https://codeclimate.com/github/mose/cliprompt.png)](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 }
|