valet 0.0.7 → 0.0.8
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.
- 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
|