valet 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +2 -2
- data/bin/valet +14 -0
- data/features/help.feature +2 -2
- data/features/version.feature +5 -103
- data/lib/valet.rb +5 -4
- data/lib/valet/application.rb +9 -17
- data/lib/valet/command.rb +60 -0
- data/lib/valet/commands.rb +7 -0
- data/lib/valet/helpers/type_cast.rb +46 -0
- data/lib/valet/option/common.rb +58 -0
- data/lib/valet/option/flag.rb +44 -0
- data/lib/valet/option/switch.rb +32 -0
- data/lib/valet/options.rb +31 -0
- data/lib/valet/version.rb +1 -1
- data/spec/spec_helper.rb +5 -9
- data/spec/support/shared_examples.rb +54 -0
- data/spec/support/terminal_helper.rb +20 -0
- data/spec/valet/application_spec.rb +57 -27
- data/spec/valet/command_spec.rb +116 -0
- data/spec/valet/commands_spec.rb +5 -0
- data/spec/valet/helpers/type_cast_spec.rb +33 -0
- data/spec/valet/option/flag_spec.rb +73 -0
- data/spec/valet/option/switch_spec.rb +59 -0
- data/spec/valet/options_spec.rb +56 -0
- data/spec/valet/version_spec.rb +4 -4
- data/valet.gemspec +9 -11
- metadata +30 -36
- data/features/step_definitions/command_line_steps.rb +0 -3
- data/features/step_definitions/file_steps.rb +0 -3
- data/features/support/helpers/cli_helper.rb +0 -23
- data/features/support/world_extensions.rb +0 -1
- data/lib/valet/templates/version.mustache +0 -5
- data/lib/valet/view.rb +0 -29
- data/lib/valet/views/version.rb +0 -31
- data/spec/valet/view_spec.rb +0 -20
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Valet::Option::Flag do
|
4
|
+
it_behaves_like "a common option"
|
5
|
+
|
6
|
+
subject(:opt) { Option::Flag.new(:output) }
|
7
|
+
|
8
|
+
its(:type) { should be(String) }
|
9
|
+
its(:default) { should be_nil }
|
10
|
+
its(:value) { should be_nil }
|
11
|
+
its(:arg_name) { should eq('output')}
|
12
|
+
|
13
|
+
describe "attributes" do
|
14
|
+
it "can be given a custom type" do
|
15
|
+
opt.type = Integer
|
16
|
+
expect(opt.type).to be(Integer)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "can be given a default" do
|
20
|
+
opt.default = '~/backups'
|
21
|
+
expect(opt.value).to eq('~/backups')
|
22
|
+
end
|
23
|
+
|
24
|
+
it "can be given a value" do
|
25
|
+
opt.value = '/var/backups'
|
26
|
+
expect(opt.value).to eq('/var/backups')
|
27
|
+
end
|
28
|
+
|
29
|
+
it "can be given a custom argument name" do
|
30
|
+
opt.arg_name = 'file'
|
31
|
+
expect(opt.arg_name).to eq('file')
|
32
|
+
end
|
33
|
+
|
34
|
+
context "raises an OptionError" do
|
35
|
+
it "if the given type is not allowed" do
|
36
|
+
expect { opt.type = Mutex }.to raise_error(TypeError)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#long_name_to_s" do
|
42
|
+
it "returns '--flag=<flag>' if the flag has no default" do
|
43
|
+
opt = Option::Flag.new(:suffix)
|
44
|
+
opt.default = nil
|
45
|
+
expect(opt.long_name_to_s).to eq('--suffix=<suffix>')
|
46
|
+
end
|
47
|
+
|
48
|
+
it "returns '--flag[=<flag>]' if the flag has a default" do
|
49
|
+
opt = Option::Flag.new(:chmod)
|
50
|
+
opt.default = 755
|
51
|
+
expect(opt.long_name_to_s).to eq('--chmod[=<chmod>]')
|
52
|
+
end
|
53
|
+
|
54
|
+
it "transforms underscores to dashes" do
|
55
|
+
opt = Option::Flag.new(:target_directory)
|
56
|
+
expect(opt.long_name_to_s).to eq('--target-directory=<target directory>')
|
57
|
+
end
|
58
|
+
|
59
|
+
it "prints the custom argument name if it has been set" do
|
60
|
+
opt = Option::Flag.new(:remote_host)
|
61
|
+
opt.arg_name = 'host'
|
62
|
+
expect(opt.long_name_to_s).to eq('--remote-host=<host>')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#switch?" do
|
67
|
+
specify { expect(opt.switch?).to be_false }
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#flag?" do
|
71
|
+
specify { expect(opt.flag?).to be_true }
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Valet::Option::Switch do
|
4
|
+
it_behaves_like "a common option"
|
5
|
+
|
6
|
+
subject(:opt) { Option::Switch.new(:verbose) }
|
7
|
+
|
8
|
+
its(:default) { should be_false }
|
9
|
+
its(:value) { should be_false }
|
10
|
+
|
11
|
+
describe "attributes" do
|
12
|
+
it "can be given a new default 'true'" do
|
13
|
+
opt.default = true
|
14
|
+
expect(opt.value).to be_true
|
15
|
+
end
|
16
|
+
|
17
|
+
it "can be given a new default 'false'" do
|
18
|
+
opt.default = false
|
19
|
+
expect(opt.value).to be_false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#switch" do
|
24
|
+
it "changes the value from false to true" do
|
25
|
+
opt.default = false
|
26
|
+
expect(opt.switch).to be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "changes the value from true to false" do
|
30
|
+
opt.default = true
|
31
|
+
expect(opt.switch).to be_false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#long_name_to_s" do
|
36
|
+
it "returns '--switch' if the switch defaults to false" do
|
37
|
+
opt.default = false
|
38
|
+
expect(opt.long_name_to_s).to eq('--verbose')
|
39
|
+
end
|
40
|
+
|
41
|
+
it "returns '--no-switch' if the switch defaults to true" do
|
42
|
+
opt.default = true
|
43
|
+
expect(opt.long_name_to_s).to eq('--no-verbose')
|
44
|
+
end
|
45
|
+
|
46
|
+
it "transforms underscores to dashes" do
|
47
|
+
opt = Option::Switch.new(:ignore_errors)
|
48
|
+
expect(opt.long_name_to_s).to eq('--ignore-errors')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#switch?" do
|
53
|
+
specify { expect(opt.switch?).to be_true }
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#flag?" do
|
57
|
+
specify { expect(opt.flag?).to be_false }
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Valet::Options do
|
4
|
+
subject(:opts) { Options.new }
|
5
|
+
|
6
|
+
let(:switch) { Option::Switch.new(:verbose) }
|
7
|
+
let(:flag) { Option::Flag.new(:output) }
|
8
|
+
|
9
|
+
before { opts << switch << flag }
|
10
|
+
|
11
|
+
describe "#[]" do
|
12
|
+
it "searches for a switch option by a given name and returns it" do
|
13
|
+
expect(opts[:verbose]).to equal(switch)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "searches for a flag option by a given name and returns it" do
|
17
|
+
expect(opts[:output]).to equal(flag)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns nil if nothing could be found" do
|
21
|
+
expect(opts[:clobber]).to be_nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#method_missing" do
|
26
|
+
context "access to switch options" do
|
27
|
+
it "returns the switch's value if #method_name matches its option name" do
|
28
|
+
switch.stub(value: true)
|
29
|
+
expect(opts.verbose?).to be_true
|
30
|
+
end
|
31
|
+
|
32
|
+
it "raises a NoMethodError if using no question mark in #method_name" do
|
33
|
+
expect { opts.verbose }.to raise_error(NoMethodError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "raises a NoMethodError if there's no switch matching #method_name" do
|
37
|
+
expect { opts.cache? }.to raise_error(NoMethodError)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "access to flag options" do
|
42
|
+
it "returns the flag's value if #method_name matches its option name" do
|
43
|
+
flag.stub(value: '~/backups')
|
44
|
+
expect(opts.output).to eq('~/backups')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "raises a NoMethodError is using a question mark in #method_name" do
|
48
|
+
expect { opts.output? }.to raise_error(NoMethodError)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "raises a NoMethodError if there's no flag matching #method_name" do
|
52
|
+
expect { opts.dirs }.to raise_error(NoMethodError)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/spec/valet/version_spec.rb
CHANGED
@@ -2,18 +2,18 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Valet::VERSION do
|
4
4
|
it "has a major version number" do
|
5
|
-
Valet::VERSION::MAJOR.
|
5
|
+
expect(Valet::VERSION::MAJOR).to be_an(Integer)
|
6
6
|
end
|
7
7
|
|
8
8
|
it "has a minor version number" do
|
9
|
-
Valet::VERSION::MINOR.
|
9
|
+
expect(Valet::VERSION::MINOR).to be_an(Integer)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "has a build version number" do
|
13
|
-
Valet::VERSION::BUILD.
|
13
|
+
expect(Valet::VERSION::BUILD).to be_an(Integer)
|
14
14
|
end
|
15
15
|
|
16
16
|
it "has a RubyGems compliant version string" do
|
17
|
-
Valet::VERSION::STRING.
|
17
|
+
expect(Valet::VERSION::STRING).to match(/\A\d+\.\d+\.\d+(\.rc\d+)?\z/)
|
18
18
|
end
|
19
19
|
end
|
data/valet.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
require File.expand_path('../lib/valet/version', __FILE__)
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
|
-
gem.name
|
5
|
-
gem.version
|
6
|
-
gem.license
|
7
|
-
gem.authors
|
8
|
-
gem.email
|
9
|
-
gem.homepage
|
10
|
-
gem.summary
|
11
|
-
gem.description
|
4
|
+
gem.name = 'valet'
|
5
|
+
gem.version = Valet::VERSION::STRING
|
6
|
+
gem.license = 'MIT'
|
7
|
+
gem.authors = ['Alexander Baumann']
|
8
|
+
gem.email = ['alexander.baumann@arclight.ch']
|
9
|
+
gem.homepage = 'http://gitkeeper.github.com/valet'
|
10
|
+
gem.summary = 'A framework for creating GNU compliant command-line interfaces.'
|
11
|
+
gem.description = <<-DESCRIPTION.gsub(/^ {4}/, '').gsub(/\n/, ' ').strip
|
12
12
|
Valet helps you write the sophisticated command-line interfaces you're so
|
13
13
|
used to from GNU/Linux. It provides a beautiful API, rich template support,
|
14
14
|
smart configuration, man page generator, and many other useful features.
|
@@ -33,10 +33,8 @@ Gem::Specification.new do |gem|
|
|
33
33
|
gem.test_files = gem.files.grep(%r{^(spec|features)/})
|
34
34
|
gem.require_paths = ['lib']
|
35
35
|
|
36
|
-
gem.add_dependency 'mustache', '~> 0.99'
|
37
|
-
|
38
36
|
gem.add_development_dependency 'rake', '~> 0.9'
|
39
|
-
gem.add_development_dependency 'rspec', '~> 2.
|
37
|
+
gem.add_development_dependency 'rspec', '~> 2.11'
|
40
38
|
gem.add_development_dependency 'cucumber', '~> 1.2'
|
41
39
|
gem.add_development_dependency 'aruba', '~> 0.4'
|
42
40
|
gem.add_development_dependency 'simplecov', '~> 0.6'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: mustache
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0.99'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0.99'
|
30
14
|
- !ruby/object:Gem::Dependency
|
31
15
|
name: rake
|
32
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,7 +34,7 @@ dependencies:
|
|
50
34
|
requirements:
|
51
35
|
- - ~>
|
52
36
|
- !ruby/object:Gem::Version
|
53
|
-
version: '2.
|
37
|
+
version: '2.11'
|
54
38
|
type: :development
|
55
39
|
prerelease: false
|
56
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +42,7 @@ dependencies:
|
|
58
42
|
requirements:
|
59
43
|
- - ~>
|
60
44
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
45
|
+
version: '2.11'
|
62
46
|
- !ruby/object:Gem::Dependency
|
63
47
|
name: cucumber
|
64
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,22 +162,29 @@ files:
|
|
178
162
|
- Rakefile
|
179
163
|
- bin/valet
|
180
164
|
- features/help.feature
|
181
|
-
- features/step_definitions/command_line_steps.rb
|
182
|
-
- features/step_definitions/file_steps.rb
|
183
165
|
- features/support/env.rb
|
184
|
-
- features/support/helpers/cli_helper.rb
|
185
|
-
- features/support/world_extensions.rb
|
186
166
|
- features/version.feature
|
187
167
|
- lib/valet.rb
|
188
168
|
- lib/valet/application.rb
|
189
|
-
- lib/valet/
|
169
|
+
- lib/valet/command.rb
|
170
|
+
- lib/valet/commands.rb
|
171
|
+
- lib/valet/helpers/type_cast.rb
|
172
|
+
- lib/valet/option/common.rb
|
173
|
+
- lib/valet/option/flag.rb
|
174
|
+
- lib/valet/option/switch.rb
|
175
|
+
- lib/valet/options.rb
|
190
176
|
- lib/valet/version.rb
|
191
|
-
- lib/valet/view.rb
|
192
|
-
- lib/valet/views/version.rb
|
193
177
|
- spec/spec_helper.rb
|
178
|
+
- spec/support/shared_examples.rb
|
179
|
+
- spec/support/terminal_helper.rb
|
194
180
|
- spec/valet/application_spec.rb
|
181
|
+
- spec/valet/command_spec.rb
|
182
|
+
- spec/valet/commands_spec.rb
|
183
|
+
- spec/valet/helpers/type_cast_spec.rb
|
184
|
+
- spec/valet/option/flag_spec.rb
|
185
|
+
- spec/valet/option/switch_spec.rb
|
186
|
+
- spec/valet/options_spec.rb
|
195
187
|
- spec/valet/version_spec.rb
|
196
|
-
- spec/valet/view_spec.rb
|
197
188
|
- tasks/clean.rake
|
198
189
|
- tasks/cucumber.rake
|
199
190
|
- tasks/spec.rake
|
@@ -203,7 +194,7 @@ homepage: http://gitkeeper.github.com/valet
|
|
203
194
|
licenses:
|
204
195
|
- MIT
|
205
196
|
post_install_message: ! "\n# --------------------------------------------------------------------
|
206
|
-
#\n\n Thank you for installing Valet 0.0.
|
197
|
+
#\n\n Thank you for installing Valet 0.0.8!\n\n Valet is still in development
|
207
198
|
and not yet intended to be used.\n\n# --------------------------------------------------------------------
|
208
199
|
#\n\n"
|
209
200
|
rdoc_options: []
|
@@ -217,7 +208,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
217
208
|
version: '0'
|
218
209
|
segments:
|
219
210
|
- 0
|
220
|
-
hash:
|
211
|
+
hash: 272199638211078853
|
221
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
222
213
|
none: false
|
223
214
|
requirements:
|
@@ -226,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
217
|
version: '0'
|
227
218
|
segments:
|
228
219
|
- 0
|
229
|
-
hash:
|
220
|
+
hash: 272199638211078853
|
230
221
|
requirements: []
|
231
222
|
rubyforge_project:
|
232
223
|
rubygems_version: 1.8.24
|
@@ -235,14 +226,17 @@ specification_version: 3
|
|
235
226
|
summary: A framework for creating GNU compliant command-line interfaces.
|
236
227
|
test_files:
|
237
228
|
- features/help.feature
|
238
|
-
- features/step_definitions/command_line_steps.rb
|
239
|
-
- features/step_definitions/file_steps.rb
|
240
229
|
- features/support/env.rb
|
241
|
-
- features/support/helpers/cli_helper.rb
|
242
|
-
- features/support/world_extensions.rb
|
243
230
|
- features/version.feature
|
244
231
|
- spec/spec_helper.rb
|
232
|
+
- spec/support/shared_examples.rb
|
233
|
+
- spec/support/terminal_helper.rb
|
245
234
|
- spec/valet/application_spec.rb
|
235
|
+
- spec/valet/command_spec.rb
|
236
|
+
- spec/valet/commands_spec.rb
|
237
|
+
- spec/valet/helpers/type_cast_spec.rb
|
238
|
+
- spec/valet/option/flag_spec.rb
|
239
|
+
- spec/valet/option/switch_spec.rb
|
240
|
+
- spec/valet/options_spec.rb
|
246
241
|
- spec/valet/version_spec.rb
|
247
|
-
- spec/valet/view_spec.rb
|
248
242
|
has_rdoc:
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module CLIHelper
|
2
|
-
class CLI
|
3
|
-
def initialize(content = nil)
|
4
|
-
@content = content
|
5
|
-
end
|
6
|
-
|
7
|
-
def source
|
8
|
-
<<-CLI_FILE.gsub(/^ {8}/, '')
|
9
|
-
require 'valet'
|
10
|
-
|
11
|
-
class CLI < Valet::Application
|
12
|
-
#{@content ? @content.gsub(/^/, ' ') : '# No content has been given'}
|
13
|
-
end
|
14
|
-
|
15
|
-
CLI.start
|
16
|
-
CLI_FILE
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def new_cli(content = nil)
|
21
|
-
CLI.new(content)
|
22
|
-
end
|
23
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
World(CLIHelper)
|
data/lib/valet/view.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module Valet
|
2
|
-
class View < Mustache
|
3
|
-
self.view_namespace = 'Valet::Views'
|
4
|
-
self.template_path = 'templates'
|
5
|
-
|
6
|
-
def render
|
7
|
-
fall_back_to_valet unless template_exists?
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def escapeHTML(string)
|
12
|
-
string
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def fall_back_to_valet
|
18
|
-
self.template_path = valet_template_path
|
19
|
-
end
|
20
|
-
|
21
|
-
def valet_template_path
|
22
|
-
File.expand_path('../templates', __FILE__)
|
23
|
-
end
|
24
|
-
|
25
|
-
def template_exists?
|
26
|
-
File.exists?(template_file)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|