escort 0.2.1 → 0.3.0

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.
Files changed (69) hide show
  1. checksums.yaml +8 -8
  2. data/.irbrc +2 -0
  3. data/.travis.yml +1 -1
  4. data/README.md +272 -3
  5. data/TODO.md +118 -71
  6. data/examples/.my_apprc +24 -0
  7. data/examples/basic_config_file +16 -0
  8. data/examples/basic_conflicts +1 -1
  9. data/examples/basic_with_everything +30 -0
  10. data/examples/suite_complex +65 -0
  11. data/examples/{command → suite_simple} +0 -0
  12. data/examples/suite_with_sub_commands +94 -0
  13. data/lib/escort.rb +6 -4
  14. data/lib/escort/action_command/base.rb +7 -5
  15. data/lib/escort/app.rb +2 -8
  16. data/lib/escort/auto_options.rb +5 -3
  17. data/lib/escort/formatter/cursor_position.rb +29 -0
  18. data/lib/escort/formatter/default_help_formatter.rb +37 -32
  19. data/lib/escort/formatter/option.rb +1 -1
  20. data/lib/escort/formatter/stream_output_formatter.rb +88 -0
  21. data/lib/escort/formatter/{borderless_table.rb → string_grid.rb} +21 -19
  22. data/lib/escort/formatter/string_splitter.rb +24 -4
  23. data/lib/escort/setup/configuration/loader.rb +8 -2
  24. data/lib/escort/setup/configuration/locator/chaining.rb +29 -0
  25. data/lib/escort/setup/configuration/locator/executing_script_directory.rb +15 -0
  26. data/lib/escort/setup/configuration/locator/specified_directory.rb +21 -0
  27. data/lib/escort/setup/configuration/reader.rb +4 -2
  28. data/lib/escort/setup/configuration/writer.rb +6 -2
  29. data/lib/escort/setup/dsl/command.rb +7 -8
  30. data/lib/escort/setup/dsl/global.rb +3 -51
  31. data/lib/escort/version.rb +1 -1
  32. data/spec/integration/basic_config_file_spec.rb +82 -0
  33. data/spec/integration/suite_simple_spec.rb +45 -0
  34. data/spec/integration/suite_sub_command_spec.rb +51 -0
  35. data/spec/lib/escort/action_command/base_spec.rb +200 -0
  36. data/spec/lib/escort/formatter/option_spec.rb +2 -2
  37. data/spec/lib/escort/formatter/stream_output_formatter_spec.rb +214 -0
  38. data/spec/lib/escort/formatter/string_grid_spec.rb +59 -0
  39. data/spec/lib/escort/setup/configuration/generator_spec.rb +101 -0
  40. data/spec/lib/escort/setup/configuration/loader_spec.rb +79 -0
  41. data/spec/lib/escort/setup/configuration/locator/chaining_spec.rb +81 -0
  42. data/spec/lib/escort/setup/configuration/locator/descending_to_home_spec.rb +57 -0
  43. data/spec/lib/escort/setup/configuration/locator/executing_script_directory_spec.rb +29 -0
  44. data/spec/lib/escort/setup/configuration/locator/specified_directory_spec.rb +33 -0
  45. data/spec/lib/escort/setup/configuration/merge_tool_spec.rb +41 -0
  46. data/spec/lib/escort/setup/configuration/reader_spec.rb +41 -0
  47. data/spec/lib/escort/setup/configuration/writer_spec.rb +75 -0
  48. data/spec/spec_helper.rb +2 -1
  49. metadata +44 -24
  50. data/examples/attic/1_1_basic.rb +0 -15
  51. data/examples/attic/1_2_basic_requires_arguments.rb +0 -15
  52. data/examples/attic/2_2_command.rb +0 -18
  53. data/examples/attic/2_2_command_requires_arguments.rb +0 -20
  54. data/examples/attic/2_3_nested_commands.rb +0 -26
  55. data/examples/attic/3_validations.rb +0 -31
  56. data/examples/attic/4_1_config_file.rb +0 -42
  57. data/examples/attic/argument_handling/basic.rb +0 -12
  58. data/examples/attic/argument_handling/basic_command.rb +0 -18
  59. data/examples/attic/argument_handling/no_arguments.rb +0 -14
  60. data/examples/attic/argument_handling/no_arguments_command.rb +0 -20
  61. data/examples/attic/command_aliases/app.rb +0 -31
  62. data/examples/attic/config_file/.apprc2 +0 -16
  63. data/examples/attic/config_file/app.rb +0 -78
  64. data/examples/attic/config_file/sub_commands.rb +0 -35
  65. data/examples/attic/default_command/app.rb +0 -20
  66. data/examples/attic/sub_commands/app.rb +0 -18
  67. data/examples/attic/validation_basic/app.rb +0 -31
  68. data/lib/escort/formatter/terminal_formatter.rb +0 -58
  69. data/lib/escort/setup/dsl/validations.rb +0 -25
@@ -0,0 +1,41 @@
1
+ describe Escort::Setup::Configuration::Reader do
2
+ include FakeFS::SpecHelpers
3
+
4
+ let(:reader) {Escort::Setup::Configuration::Reader.new(path)}
5
+ let(:path) {'/usr/alan/blah.json'}
6
+ let(:data) { {:hello => :world} }
7
+
8
+ describe "#read" do
9
+ subject {reader.read}
10
+
11
+ context "when path not given" do
12
+ let(:path) {nil}
13
+ it{subject.should be_empty}
14
+ end
15
+
16
+ context "when configuration file not present" do
17
+ before do
18
+ FileUtils.mkdir_p(File.dirname path)
19
+ end
20
+ it{subject.should be_empty}
21
+ end
22
+
23
+ context "when configuration file not JSON" do
24
+ before do
25
+ FileUtils.mkdir_p(File.dirname path)
26
+ File.open(path, 'w') {|f| f.write("hello") }
27
+ end
28
+ it{subject.should be_empty}
29
+ end
30
+
31
+ context "when configuration file present" do
32
+ let(:config_data) { {:hello => :blah} }
33
+
34
+ before do
35
+ FileUtils.mkdir_p(File.dirname path)
36
+ File.open(path, 'w') {|f| f.write(JSON.pretty_generate(config_data)) }
37
+ end
38
+ it {subject.data.should == {:hello => "blah"}}
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,75 @@
1
+ describe Escort::Setup::Configuration::Writer do
2
+ include FakeFS::SpecHelpers
3
+ let(:writer) {Escort::Setup::Configuration::Writer.new(path, data)}
4
+ let(:path) {'/usr/alan/blah.json'}
5
+ let(:data) { {:hello => :world} }
6
+
7
+ describe "#write" do
8
+ subject {writer.write}
9
+
10
+ context "when path is nil" do
11
+ let(:path) {nil}
12
+ it {subject.should be_empty}
13
+ end
14
+
15
+ context "when path is not nil" do
16
+ context "and the file does not exist" do
17
+ it {subject.should_not be_empty}
18
+ it {subject.path.should == path}
19
+ it {subject.data.should == data}
20
+ it("file should have the right contents") do
21
+ subject
22
+ json = File.read(path)
23
+ hash = ::JSON.parse(json)
24
+ actual_data = Escort::Utils.symbolize_keys(hash)
25
+ actual_data.should == {:hello => "world"}
26
+ end
27
+ end
28
+
29
+ context "and the file already exists" do
30
+ before do
31
+ FileUtils.mkdir_p(File.dirname path)
32
+ FileUtils.touch(path)
33
+ end
34
+ it {subject.should be_empty}
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "#update" do
40
+ subject {writer.update}
41
+
42
+ context "when file does not exist" do
43
+ it {subject.should_not be_empty}
44
+ it {subject.path.should == path}
45
+ it {subject.data.should == data}
46
+ it("file should have the right contents") do
47
+ subject
48
+ json = File.read(path)
49
+ hash = ::JSON.parse(json)
50
+ actual_data = Escort::Utils.symbolize_keys(hash)
51
+ actual_data.should == {:hello => "world"}
52
+ end
53
+ end
54
+
55
+ context "when file does exit" do
56
+ let(:previous_data) { {:hello => :blah} }
57
+ let(:data) { {:hello => :world, :foo => :bar} }
58
+ before do
59
+ FileUtils.mkdir_p(File.dirname path)
60
+ File.open(path, 'w') {|f| f.write(JSON.pretty_generate(previous_data)) }
61
+ end
62
+
63
+ it {subject.should_not be_empty}
64
+ it {subject.path.should == path}
65
+ it {subject.data.should == data}
66
+ it("file should have the right contents") do
67
+ subject
68
+ json = File.read(path)
69
+ hash = ::JSON.parse(json)
70
+ actual_data = Escort::Utils.symbolize_keys(hash)
71
+ actual_data.should == {:hello=>"blah", :foo=>"bar"}
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,5 +1,6 @@
1
1
  require 'escort'
2
-
2
+ require 'fakefs/safe'
3
+ require 'fakefs/spec_helpers'
3
4
 
4
5
  Dir[File.join(File.dirname(__FILE__), 'support', '**', "*.rb").to_s].each {|file| require file }
5
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: escort
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Skorkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-06 00:00:00.000000000 Z
11
+ date: 2013-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -87,25 +87,9 @@ files:
87
87
  - Rakefile
88
88
  - TODO.md
89
89
  - escort.gemspec
90
- - examples/attic/1_1_basic.rb
91
- - examples/attic/1_2_basic_requires_arguments.rb
92
- - examples/attic/2_2_command.rb
93
- - examples/attic/2_2_command_requires_arguments.rb
94
- - examples/attic/2_3_nested_commands.rb
95
- - examples/attic/3_validations.rb
96
- - examples/attic/4_1_config_file.rb
97
- - examples/attic/argument_handling/basic.rb
98
- - examples/attic/argument_handling/basic_command.rb
99
- - examples/attic/argument_handling/no_arguments.rb
100
- - examples/attic/argument_handling/no_arguments_command.rb
101
- - examples/attic/command_aliases/app.rb
102
- - examples/attic/config_file/.apprc2
103
- - examples/attic/config_file/app.rb
104
- - examples/attic/config_file/sub_commands.rb
105
- - examples/attic/default_command/app.rb
106
- - examples/attic/sub_commands/app.rb
107
- - examples/attic/validation_basic/app.rb
90
+ - examples/.my_apprc
108
91
  - examples/basic
92
+ - examples/basic_config_file
109
93
  - examples/basic_conflicts
110
94
  - examples/basic_depends_on
111
95
  - examples/basic_flags
@@ -114,8 +98,11 @@ files:
114
98
  - examples/basic_require_arguments
115
99
  - examples/basic_texts
116
100
  - examples/basic_validations
117
- - examples/command
101
+ - examples/basic_with_everything
118
102
  - examples/commands/example_command.rb
103
+ - examples/suite_complex
104
+ - examples/suite_simple
105
+ - examples/suite_with_sub_commands
119
106
  - lib/escort.rb
120
107
  - lib/escort/action_command/base.rb
121
108
  - lib/escort/action_command/escort_utility_command.rb
@@ -123,17 +110,18 @@ files:
123
110
  - lib/escort/arguments.rb
124
111
  - lib/escort/auto_options.rb
125
112
  - lib/escort/error/error.rb
126
- - lib/escort/formatter/borderless_table.rb
127
113
  - lib/escort/formatter/command.rb
128
114
  - lib/escort/formatter/commands.rb
115
+ - lib/escort/formatter/cursor_position.rb
129
116
  - lib/escort/formatter/default_help_formatter.rb
130
117
  - lib/escort/formatter/global_command.rb
131
118
  - lib/escort/formatter/option.rb
132
119
  - lib/escort/formatter/options.rb
133
120
  - lib/escort/formatter/shell_command_executor.rb
121
+ - lib/escort/formatter/stream_output_formatter.rb
122
+ - lib/escort/formatter/string_grid.rb
134
123
  - lib/escort/formatter/string_splitter.rb
135
124
  - lib/escort/formatter/terminal.rb
136
- - lib/escort/formatter/terminal_formatter.rb
137
125
  - lib/escort/global_pre_parser.rb
138
126
  - lib/escort/logger.rb
139
127
  - lib/escort/option_dependency_validator.rb
@@ -142,7 +130,10 @@ files:
142
130
  - lib/escort/setup/configuration/instance.rb
143
131
  - lib/escort/setup/configuration/loader.rb
144
132
  - lib/escort/setup/configuration/locator/base.rb
133
+ - lib/escort/setup/configuration/locator/chaining.rb
145
134
  - lib/escort/setup/configuration/locator/descending_to_home.rb
135
+ - lib/escort/setup/configuration/locator/executing_script_directory.rb
136
+ - lib/escort/setup/configuration/locator/specified_directory.rb
146
137
  - lib/escort/setup/configuration/merge_tool.rb
147
138
  - lib/escort/setup/configuration/reader.rb
148
139
  - lib/escort/setup/configuration/writer.rb
@@ -151,12 +142,12 @@ files:
151
142
  - lib/escort/setup/dsl/config_file.rb
152
143
  - lib/escort/setup/dsl/global.rb
153
144
  - lib/escort/setup/dsl/options.rb
154
- - lib/escort/setup/dsl/validations.rb
155
145
  - lib/escort/setup_accessor.rb
156
146
  - lib/escort/trollop.rb
157
147
  - lib/escort/utils.rb
158
148
  - lib/escort/validator.rb
159
149
  - lib/escort/version.rb
150
+ - spec/integration/basic_config_file_spec.rb
160
151
  - spec/integration/basic_conflicts_spec.rb
161
152
  - spec/integration/basic_depends_on_spec.rb
162
153
  - spec/integration/basic_options_spec.rb
@@ -165,12 +156,26 @@ files:
165
156
  - spec/integration/basic_validations_spec.rb
166
157
  - spec/integration/basic_with_arguments_spec.rb
167
158
  - spec/integration/basic_with_text_fields_spec.rb
159
+ - spec/integration/suite_simple_spec.rb
160
+ - spec/integration/suite_sub_command_spec.rb
161
+ - spec/lib/escort/action_command/base_spec.rb
168
162
  - spec/lib/escort/formatter/command_spec.rb
169
163
  - spec/lib/escort/formatter/global_command_spec.rb
170
164
  - spec/lib/escort/formatter/option_spec.rb
171
165
  - spec/lib/escort/formatter/shell_command_executor_spec.rb
166
+ - spec/lib/escort/formatter/stream_output_formatter_spec.rb
167
+ - spec/lib/escort/formatter/string_grid_spec.rb
172
168
  - spec/lib/escort/formatter/string_splitter_spec.rb
173
169
  - spec/lib/escort/formatter/terminal_spec.rb
170
+ - spec/lib/escort/setup/configuration/generator_spec.rb
171
+ - spec/lib/escort/setup/configuration/loader_spec.rb
172
+ - spec/lib/escort/setup/configuration/locator/chaining_spec.rb
173
+ - spec/lib/escort/setup/configuration/locator/descending_to_home_spec.rb
174
+ - spec/lib/escort/setup/configuration/locator/executing_script_directory_spec.rb
175
+ - spec/lib/escort/setup/configuration/locator/specified_directory_spec.rb
176
+ - spec/lib/escort/setup/configuration/merge_tool_spec.rb
177
+ - spec/lib/escort/setup/configuration/reader_spec.rb
178
+ - spec/lib/escort/setup/configuration/writer_spec.rb
174
179
  - spec/lib/escort/setup_accessor_spec.rb
175
180
  - spec/lib/escort/utils_spec.rb
176
181
  - spec/spec_helper.rb
@@ -205,6 +210,7 @@ specification_version: 4
205
210
  summary: A library that makes building command line apps in ruby so easy, you'll feel
206
211
  like an expert is guiding you through it
207
212
  test_files:
213
+ - spec/integration/basic_config_file_spec.rb
208
214
  - spec/integration/basic_conflicts_spec.rb
209
215
  - spec/integration/basic_depends_on_spec.rb
210
216
  - spec/integration/basic_options_spec.rb
@@ -213,12 +219,26 @@ test_files:
213
219
  - spec/integration/basic_validations_spec.rb
214
220
  - spec/integration/basic_with_arguments_spec.rb
215
221
  - spec/integration/basic_with_text_fields_spec.rb
222
+ - spec/integration/suite_simple_spec.rb
223
+ - spec/integration/suite_sub_command_spec.rb
224
+ - spec/lib/escort/action_command/base_spec.rb
216
225
  - spec/lib/escort/formatter/command_spec.rb
217
226
  - spec/lib/escort/formatter/global_command_spec.rb
218
227
  - spec/lib/escort/formatter/option_spec.rb
219
228
  - spec/lib/escort/formatter/shell_command_executor_spec.rb
229
+ - spec/lib/escort/formatter/stream_output_formatter_spec.rb
230
+ - spec/lib/escort/formatter/string_grid_spec.rb
220
231
  - spec/lib/escort/formatter/string_splitter_spec.rb
221
232
  - spec/lib/escort/formatter/terminal_spec.rb
233
+ - spec/lib/escort/setup/configuration/generator_spec.rb
234
+ - spec/lib/escort/setup/configuration/loader_spec.rb
235
+ - spec/lib/escort/setup/configuration/locator/chaining_spec.rb
236
+ - spec/lib/escort/setup/configuration/locator/descending_to_home_spec.rb
237
+ - spec/lib/escort/setup/configuration/locator/executing_script_directory_spec.rb
238
+ - spec/lib/escort/setup/configuration/locator/specified_directory_spec.rb
239
+ - spec/lib/escort/setup/configuration/merge_tool_spec.rb
240
+ - spec/lib/escort/setup/configuration/reader_spec.rb
241
+ - spec/lib/escort/setup/configuration/writer_spec.rb
222
242
  - spec/lib/escort/setup_accessor_spec.rb
223
243
  - spec/lib/escort/utils_spec.rb
224
244
  - spec/spec_helper.rb
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- app.version "0.2.5"
6
-
7
- app.options do |opts|
8
- opts.opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
9
- opts.opt :multi_option, "Option that can be specified multiple times alksjdfh lakjdfh adf alksdfh alkdfjh alsdfjhaskdjfh alsdkfjh alksfdjh akdfjh alkdsjf alksdjfh alksdfjh asdfjklh aslkdfhj aslkdfjh adfjkhl", :short => '-m', :long => '--multi', :type => :string, :multi => true
10
- end
11
-
12
- app.action do |options, arguments|
13
- puts "Action \nglobal options: #{options} \narguments: #{arguments}"
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- app.requires_arguments
6
-
7
- app.options do |opts|
8
- opts.opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
9
- opts.opt :multi_option, "Option that can be specified multiple times alksjdfh lakjdfh adf alksdfh alkdfjh alsdfjhaskdjfh alsdkfjh alksfdjh akdfjh alkdsjf alksdjfh alksdfjh asdfjklh aslkdfhj aslkdfjh adfjkhl", :short => '-m', :long => '--multi', :type => :string, :multi => true
10
- end
11
-
12
- app.action do |options, arguments|
13
- puts "Action \nglobal options: #{options} \narguments: #{arguments}"
14
- end
15
- end
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- app.options do |opts|
6
- opts.opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
7
- end
8
-
9
- app.command :my_command, :description => "KJHLKJH askj aldkjfhakldfjh akdjfh alkdfhj alkdjhf alkjsdhf alkjsdhf aklsjdhf aklsjdhf akljdhf alkdjfh" do |command|
10
- command.options do |opts|
11
- opts.opt :do_stuff, "Do stuff", :short => :none, :long => '--do-stuff', :type => :boolean, :default => true
12
- end
13
-
14
- command.action do |options, arguments|
15
- puts "Action for my_command\noptions: #{options} \narguments: #{arguments}"
16
- end
17
- end
18
- end
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- app.options do |opts|
6
- opts.opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
7
- end
8
-
9
- app.command :my_command, :description => "KJHLKJH askj aldkjfhakldfjh akdjfh alkdfhj alkdjhf alkjsdhf alkjsdhf aklsjdhf aklsjdhf akljdhf alkdjfh" do |command|
10
- command.requires_arguments
11
-
12
- command.options do |opts|
13
- opts.opt :do_stuff, "Do stuff", :short => :none, :long => '--do-stuff', :type => :boolean, :default => true
14
- end
15
-
16
- command.action do |options, arguments|
17
- puts "Action for my_command\noptions: #{options} \narguments: #{arguments}"
18
- end
19
- end
20
- end
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- app.options do |opts|
6
- opts.opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
7
- end
8
-
9
- app.command :my_command, :description => "KJHLKJH askj aldkjfhakldfjh akdjfh alkdfhj alkdjhf alkjsdhf alkjsdhf aklsjdhf aklsjdhf akljdhf alkdjfh" do |command|
10
- command.requires_arguments
11
-
12
- command.options do |opts|
13
- opts.opt :do_stuff, "Do stuff", :short => :none, :long => '--do-stuff', :type => :boolean, :default => true
14
- end
15
-
16
- command.action do |options, arguments|
17
- puts "Action for my_command\noptions: #{options} \narguments: #{arguments}"
18
- end
19
-
20
- command.command :nested_command, :description => "A nested sub command" do |command|
21
- command.action do |options, arguments|
22
- puts "Action for my_command nested_command\noptions: #{options} \narguments: #{arguments}"
23
- end
24
- end
25
- end
26
- end
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- app.options do |opts|
6
- opts.opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
7
- opts.opt :multi_option, "Option that can be specified multiple times", :short => '-m', :long => '--multi', :type => :string, :multi => true
8
- opts.opt :a_number, "Do stuff", :short => "-n", :long => '--number', :type => :int
9
- end
10
-
11
- app.validations do |opts|
12
- opts.validate(:global_option, "must be either 'global' or 'local'") { |option| ["global", "local"].include?(option) }
13
- opts.validate(:a_number, "must be between 10 and 20 exclusive") { |option| option > 10 && option < 20 }
14
- end
15
-
16
- app.command :my_command do |command|
17
- command.options do |opts|
18
- opts.opt :do_stuff, "Do stuff", :short => :none, :long => '--do-stuff', :type => :boolean, :default => true
19
- opts.opt :string_with_format, "String with format", :short => "-f", :long => '--format', :type => :string, :default => "blah yadda11111111111"
20
- end
21
-
22
- command.validations do |opts|
23
- opts.validate(:string_with_format, "should be at least two words") {|option| option =~ /\w\s\w/}
24
- opts.validate(:string_with_format, "should be at least 20 characters long") {|option| option.length >= 20}
25
- end
26
-
27
- command.action do |options, arguments|
28
- puts "Action for my_command\noptions: #{options} \narguments: #{arguments}"
29
- end
30
- end
31
- end
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.expand_path(File.join(File.expand_path(__FILE__), "..", "..", "lib", "escort"))
3
-
4
- Escort::App.create do |app|
5
- app.options do |opts|
6
- opts.opt :global_option, "Global option", :short => '-g', :long => '--global', :type => :string, :default => "global"
7
- opts.opt :multi_option, "Option that can be specified multiple times alksjdfh lakjdfh adf alksdfh alkdfjh alsdfjhaskdjfh alsdkfjh alksfdjh akdfjh alkdsjf alksdjfh alksdfjh asdfjklh aslkdfhj aslkdfjh adfjkhl", :short => '-m', :long => '--multi', :type => :string, :multi => true
8
- end
9
-
10
- app.config_file ".apprc", :autocreate => true
11
-
12
- app.summary "Sum1"
13
- app.description "Desc1"
14
-
15
- app.command :my_command, :description => "KJHLKJH askj aldkjfhakldfjh akdjfh alkdfhj alkdjhf alkjsdhf alkjsdhf aklsjdhf aklsjdhf akljdhf alkdjfh", :aliases => [:my1, :my2] do |command|
16
- #command.requires_arguments
17
- command.summary "Sum2"
18
- command.description "Desc2"
19
-
20
- command.options do |opts|
21
- opts.opt :do_stuff, "Do stuff", :short => :none, :long => '--do-stuff', :type => :boolean, :default => true
22
- end
23
-
24
- command.action do |options, arguments|
25
- puts "Action for my_command\noptions: #{options} \narguments: #{arguments}"
26
- end
27
-
28
- command.command :nested_command, :description => "A nested sub command" do |command|
29
- command.options do |opts|
30
- opts.opt :do_stuff, "Do stuff", :short => :none, :long => '--do-stuff', :type => :boolean, :default => true
31
- end
32
-
33
- command.action do |options, arguments|
34
- puts "Action for my_command nested_command\noptions: #{options} \narguments: #{arguments}"
35
- end
36
- end
37
- end
38
-
39
- app.action do |options, arguments, config|
40
- puts "Action \nglobal options: #{options} \narguments: #{arguments}\nconfig: #{config}"
41
- end
42
- end