tty 0.8.1 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +3 -1
  4. data/lib/tty.rb +1 -1
  5. data/lib/tty/cli.rb +0 -1
  6. data/lib/tty/cmd.rb +0 -1
  7. data/lib/tty/commands/add.rb +0 -1
  8. data/lib/tty/commands/new.rb +5 -6
  9. data/lib/tty/gemspec.rb +0 -1
  10. data/lib/tty/licenses.rb +0 -1
  11. data/lib/tty/path_helpers.rb +0 -1
  12. data/lib/tty/plugins.rb +1 -1
  13. data/lib/tty/plugins/plugin.rb +1 -1
  14. data/lib/tty/templater.rb +0 -1
  15. data/lib/tty/version.rb +2 -2
  16. data/tty.gemspec +21 -18
  17. data/tty.manifest +7 -0
  18. metadata +63 -84
  19. data/.gitignore +0 -19
  20. data/.rspec +0 -4
  21. data/.travis.yml +0 -35
  22. data/.yardopts +0 -4
  23. data/CODE_OF_CONDUCT.md +0 -49
  24. data/Gemfile +0 -17
  25. data/Rakefile +0 -8
  26. data/appveyor.yml +0 -22
  27. data/images/tty.png +0 -0
  28. data/spec/fixtures/foo-0.0.1.gemspec +0 -17
  29. data/spec/integration/add_desc_args_spec.rb +0 -341
  30. data/spec/integration/add_force_spec.rb +0 -98
  31. data/spec/integration/add_namespaced_spec.rb +0 -291
  32. data/spec/integration/add_spec.rb +0 -535
  33. data/spec/integration/add_subcommand_spec.rb +0 -259
  34. data/spec/integration/new_author_spec.rb +0 -19
  35. data/spec/integration/new_license_spec.rb +0 -39
  36. data/spec/integration/new_namespaced_spec.rb +0 -228
  37. data/spec/integration/new_spec.rb +0 -354
  38. data/spec/integration/new_test_spec.rb +0 -21
  39. data/spec/integration/start_spec.rb +0 -21
  40. data/spec/spec_helper.rb +0 -73
  41. data/spec/unit/gemspec_spec.rb +0 -17
  42. data/spec/unit/plugins/activate_spec.rb +0 -13
  43. data/spec/unit/plugins/load_from_spec.rb +0 -28
  44. data/spec/unit/plugins/plugin/load_spec.rb +0 -32
  45. data/spec/unit/plugins/plugin/new_spec.rb +0 -13
  46. data/spec/unit/tty_spec.rb +0 -14
  47. data/tasks/console.rake +0 -11
  48. data/tasks/coverage.rake +0 -11
  49. data/tasks/spec.rake +0 -29
@@ -1,98 +0,0 @@
1
- RSpec.describe "`teletype add --force` command", type: :cli do
2
- it "forces adding already existing command" do
3
- app_path = tmp_path('newcli')
4
- cli_template = <<-EOS
5
- require 'thor'
6
-
7
- module Newcli
8
- class CLI < Thor
9
- desc 'config', 'Set and unset configuration information'
10
- method_option :help, aliases: '-h', type: :boolean,
11
- desc: 'Display usage information'
12
- def config(*)
13
- if options[:help]
14
- else
15
- require_relative 'commands/config'
16
- Newcli::Commands::Config.new(options).execute
17
- end
18
- end
19
- end
20
- end
21
- EOS
22
-
23
- config_template = <<-EOS
24
- require_relative '../command'
25
-
26
- module Newcli
27
- module Commands
28
- class Config < Newcli::Command
29
- def initialize(options)
30
- @options = options
31
- end
32
-
33
- def execute(input: $stdin, output: $stdout)
34
- puts 'config command'
35
- end
36
- end
37
- end
38
- end
39
- EOS
40
-
41
- dir = {
42
- app_path => [
43
- 'lib' => [
44
- 'newcli' => [
45
- ['cli.rb', cli_template],
46
- 'commands' => [
47
- ['config.rb', config_template]
48
- ]
49
- ]
50
- ],
51
- 'spec' => [
52
- 'integration' => [
53
- 'config_spec.rb'
54
- ]
55
- ]
56
- ]
57
- }
58
- ::TTY::File.create_dir(dir, verbose: false)
59
-
60
- output = <<-OUT
61
- force spec/integration/config_spec.rb
62
- create spec/unit/config_spec.rb
63
- force lib/newcli/commands/config.rb
64
- create lib/newcli/templates/config/.gitkeep
65
- OUT
66
-
67
- within_dir(app_path) do
68
- command = "teletype add config --no-color --force"
69
-
70
- out, err, status = Open3.capture3(command)
71
-
72
- expect(out).to eq(output)
73
- expect(err).to eq('')
74
- expect(status.exitstatus).to eq(0)
75
-
76
- expect(::File.read('lib/newcli/commands/config.rb')).to eq <<-EOS
77
- # frozen_string_literal: true
78
-
79
- require_relative '../command'
80
-
81
- module Newcli
82
- module Commands
83
- class Config < Newcli::Command
84
- def initialize(options)
85
- @options = options
86
- end
87
-
88
- def execute(input: $stdin, output: $stdout)
89
- # Command logic goes here ...
90
- output.puts "OK"
91
- end
92
- end
93
- end
94
- end
95
- EOS
96
- end
97
- end
98
- end
@@ -1,291 +0,0 @@
1
- RSpec.describe "teletype add", type: :cli do
2
- it "adds a command to namespaced application" do
3
- app_name = tmp_path('cli-app')
4
- silent_run("teletype new #{app_name} --test rspec")
5
-
6
- output = <<-OUT
7
- create spec/integration/server_spec.rb
8
- create spec/unit/server_spec.rb
9
- create lib/cli/app/commands/server.rb
10
- create lib/cli/app/templates/server/.gitkeep
11
- inject lib/cli/app/cli.rb
12
- OUT
13
-
14
- within_dir(app_name) do
15
- command = "teletype add server --no-color"
16
-
17
- out, err, status = Open3.capture3(command)
18
-
19
- expect(err).to eq('')
20
- expect(out).to eq(output)
21
- expect(status.exitstatus).to eq(0)
22
-
23
- # lib/cli/app/commands/server.rb
24
- #
25
- expect(::File.read('lib/cli/app/commands/server.rb')).to eq <<-EOS
26
- # frozen_string_literal: true
27
-
28
- require_relative '../command'
29
-
30
- module Cli
31
- module App
32
- module Commands
33
- class Server < Cli::App::Command
34
- def initialize(options)
35
- @options = options
36
- end
37
-
38
- def execute(input: $stdin, output: $stdout)
39
- # Command logic goes here ...
40
- output.puts "OK"
41
- end
42
- end
43
- end
44
- end
45
- end
46
- EOS
47
-
48
- # lib/cli/app/cli.rb
49
- #
50
- expect(::File.read('lib/cli/app/cli.rb')).to eq <<-EOS
51
- # frozen_string_literal: true
52
-
53
- require 'thor'
54
-
55
- module Cli
56
- module App
57
- # Handle the application command line parsing
58
- # and the dispatch to various command objects
59
- #
60
- # @api public
61
- class CLI < Thor
62
- # Error raised by this runner
63
- Error = Class.new(StandardError)
64
-
65
- desc 'version', 'cli-app version'
66
- def version
67
- require_relative 'version'
68
- puts \"v\#{Cli::App::VERSION}\"
69
- end
70
- map %w(--version -v) => :version
71
-
72
- desc 'server', 'Command description...'
73
- method_option :help, aliases: '-h', type: :boolean,
74
- desc: 'Display usage information'
75
- def server(*)
76
- if options[:help]
77
- invoke :help, ['server']
78
- else
79
- require_relative 'commands/server'
80
- Cli::App::Commands::Server.new(options).execute
81
- end
82
- end
83
- end
84
- end
85
- end
86
- EOS
87
-
88
- # test setup
89
- #
90
- expect(::File.read('spec/integration/server_spec.rb')).to eq <<-EOS
91
- RSpec.describe "`cli-app server` command", type: :cli do
92
- it "executes `cli-app help server` command successfully" do
93
- output = `cli-app help server`
94
- expected_output = <<-OUT
95
- Usage:
96
- cli-app server
97
-
98
- Options:
99
- -h, [--help], [--no-help] # Display usage information
100
-
101
- Command description...
102
- OUT
103
-
104
- expect(output).to eq(expected_output)
105
- end
106
- end
107
- EOS
108
-
109
- expect(::File.read('spec/unit/server_spec.rb')).to eq <<-EOS
110
- require 'cli/app/commands/server'
111
-
112
- RSpec.describe Cli::App::Commands::Server do
113
- it "executes `server` command successfully" do
114
- output = StringIO.new
115
- options = {}
116
- command = Cli::App::Commands::Server.new(options)
117
-
118
- command.execute(output: output)
119
-
120
- expect(output.string).to eq("OK\\n")
121
- end
122
- end
123
- EOS
124
- end
125
- end
126
-
127
- it "adds a subcommand to namespaced application" do
128
- app_name = tmp_path('cli-app')
129
- silent_run("teletype new #{app_name} --test rspec")
130
-
131
- output = <<-OUT
132
- create spec/integration/config_spec.rb
133
- create spec/integration/config/set_spec.rb
134
- create spec/unit/config/set_spec.rb
135
- create lib/cli/app/commands/config.rb
136
- create lib/cli/app/commands/config/set.rb
137
- create lib/cli/app/templates/config/set/.gitkeep
138
- inject lib/cli/app/cli.rb
139
- inject lib/cli/app/commands/config.rb
140
- OUT
141
-
142
- within_dir(app_name) do
143
- command_set = "teletype add config set --no-color"
144
-
145
- out, err, status = Open3.capture3(command_set)
146
-
147
- expect(err).to eq('')
148
- expect(out).to eq(output)
149
- expect(status.exitstatus).to eq(0)
150
-
151
- # lib/cli/app/cli.rb
152
- #
153
- expect(::File.read('lib/cli/app/cli.rb')).to eq <<-EOS
154
- # frozen_string_literal: true
155
-
156
- require 'thor'
157
-
158
- module Cli
159
- module App
160
- # Handle the application command line parsing
161
- # and the dispatch to various command objects
162
- #
163
- # @api public
164
- class CLI < Thor
165
- # Error raised by this runner
166
- Error = Class.new(StandardError)
167
-
168
- desc 'version', 'cli-app version'
169
- def version
170
- require_relative 'version'
171
- puts \"v\#{Cli::App::VERSION}\"
172
- end
173
- map %w(--version -v) => :version
174
-
175
- require_relative 'commands/config'
176
- register Cli::App::Commands::Config, 'config', 'config [SUBCOMMAND]', 'Command description...'
177
- end
178
- end
179
- end
180
- EOS
181
-
182
- # lib/cli/app/commands/config.rb
183
- #
184
- expect(::File.read('lib/cli/app/commands/config.rb')).to eq <<-EOS
185
- # frozen_string_literal: true
186
-
187
- require 'thor'
188
-
189
- module Cli
190
- module App
191
- module Commands
192
- class Config < Thor
193
-
194
- namespace :config
195
-
196
- desc 'set', 'Command description...'
197
- method_option :help, aliases: '-h', type: :boolean,
198
- desc: 'Display usage information'
199
- def set(*)
200
- if options[:help]
201
- invoke :help, ['set']
202
- else
203
- require_relative 'config/set'
204
- Cli::App::Commands::Config::Set.new(options).execute
205
- end
206
- end
207
- end
208
- end
209
- end
210
- end
211
- EOS
212
-
213
- # Subcommand `set`
214
- #
215
- expect(::File.read('lib/cli/app/commands/config/set.rb')).to eq <<-EOS
216
- # frozen_string_literal: true
217
-
218
- require_relative '../../command'
219
-
220
- module Cli
221
- module App
222
- module Commands
223
- class Config
224
- class Set < Cli::App::Command
225
- def initialize(options)
226
- @options = options
227
- end
228
-
229
- def execute(input: $stdin, output: $stdout)
230
- # Command logic goes here ...
231
- output.puts "OK"
232
- end
233
- end
234
- end
235
- end
236
- end
237
- end
238
- EOS
239
-
240
- # test setup
241
- #
242
- expect(::File.read('spec/integration/config_spec.rb')).to eq <<-EOS
243
- RSpec.describe "`cli-app config` command", type: :cli do
244
- it "executes `cli-app help config` command successfully" do
245
- output = `cli-app help config`
246
- expected_output = <<-OUT
247
- Commands:
248
- OUT
249
-
250
- expect(output).to eq(expected_output)
251
- end
252
- end
253
- EOS
254
-
255
- expect(::File.read('spec/integration/config/set_spec.rb')).to eq <<-EOS
256
- RSpec.describe "`cli-app config set` command", type: :cli do
257
- it "executes `cli-app config help set` command successfully" do
258
- output = `cli-app config help set`
259
- expected_output = <<-OUT
260
- Usage:
261
- cli-app set
262
-
263
- Options:
264
- -h, [--help], [--no-help] # Display usage information
265
-
266
- Command description...
267
- OUT
268
-
269
- expect(output).to eq(expected_output)
270
- end
271
- end
272
- EOS
273
-
274
- expect(::File.read('spec/unit/config/set_spec.rb')).to eq <<-EOS
275
- require 'cli/app/commands/config/set'
276
-
277
- RSpec.describe Cli::App::Commands::Config::Set do
278
- it "executes `config set` command successfully" do
279
- output = StringIO.new
280
- options = {}
281
- command = Cli::App::Commands::Config::Set.new(options)
282
-
283
- command.execute(output: output)
284
-
285
- expect(output.string).to eq("OK\\n")
286
- end
287
- end
288
- EOS
289
- end
290
- end
291
- end
@@ -1,535 +0,0 @@
1
- RSpec.describe "`teletype add` command", type: :cli do
2
- it "adds a command" do
3
- app_name = tmp_path('newcli')
4
- silent_run("teletype new #{app_name} --test rspec")
5
-
6
- output = <<-OUT
7
- create spec/integration/server_spec.rb
8
- create spec/unit/server_spec.rb
9
- create lib/newcli/commands/server.rb
10
- create lib/newcli/templates/server/.gitkeep
11
- inject lib/newcli/cli.rb
12
- OUT
13
-
14
- within_dir(app_name) do
15
- command = "teletype add server --no-color"
16
-
17
- out, err, status = Open3.capture3(command)
18
-
19
- expect(out).to match(output)
20
- expect(err).to eq('')
21
- expect(status.exitstatus).to eq(0)
22
-
23
- # lib/newcli/commands/server.rb
24
- #
25
- expect(::File.read('lib/newcli/commands/server.rb')).to eq <<-EOS
26
- # frozen_string_literal: true
27
-
28
- require_relative '../command'
29
-
30
- module Newcli
31
- module Commands
32
- class Server < Newcli::Command
33
- def initialize(options)
34
- @options = options
35
- end
36
-
37
- def execute(input: $stdin, output: $stdout)
38
- # Command logic goes here ...
39
- output.puts "OK"
40
- end
41
- end
42
- end
43
- end
44
- EOS
45
-
46
- expect(::File.read('lib/newcli/cli.rb')).to eq <<-EOS
47
- # frozen_string_literal: true
48
-
49
- require 'thor'
50
-
51
- module Newcli
52
- # Handle the application command line parsing
53
- # and the dispatch to various command objects
54
- #
55
- # @api public
56
- class CLI < Thor
57
- # Error raised by this runner
58
- Error = Class.new(StandardError)
59
-
60
- desc 'version', 'newcli version'
61
- def version
62
- require_relative 'version'
63
- puts \"v\#{Newcli::VERSION}\"
64
- end
65
- map %w(--version -v) => :version
66
-
67
- desc 'server', 'Command description...'
68
- method_option :help, aliases: '-h', type: :boolean,
69
- desc: 'Display usage information'
70
- def server(*)
71
- if options[:help]
72
- invoke :help, ['server']
73
- else
74
- require_relative 'commands/server'
75
- Newcli::Commands::Server.new(options).execute
76
- end
77
- end
78
- end
79
- end
80
- EOS
81
-
82
- # test setup
83
- #
84
- expect(::File.read('spec/integration/server_spec.rb')).to eq <<-EOS
85
- RSpec.describe "`newcli server` command", type: :cli do
86
- it "executes `newcli help server` command successfully" do
87
- output = `newcli help server`
88
- expected_output = <<-OUT
89
- Usage:
90
- newcli server
91
-
92
- Options:
93
- -h, [--help], [--no-help] # Display usage information
94
-
95
- Command description...
96
- OUT
97
-
98
- expect(output).to eq(expected_output)
99
- end
100
- end
101
- EOS
102
-
103
- expect(::File.read('spec/unit/server_spec.rb')).to eq <<-EOS
104
- require 'newcli/commands/server'
105
-
106
- RSpec.describe Newcli::Commands::Server do
107
- it "executes `server` command successfully" do
108
- output = StringIO.new
109
- options = {}
110
- command = Newcli::Commands::Server.new(options)
111
-
112
- command.execute(output: output)
113
-
114
- expect(output.string).to eq("OK\\n")
115
- end
116
- end
117
- EOS
118
-
119
- end
120
- end
121
-
122
- it "adds a command with minitests" do
123
- app_name = tmp_path('newcli')
124
- silent_run("teletype new #{app_name} --test minitest")
125
-
126
- output = <<-OUT
127
- create test/integration/server_test.rb
128
- create test/unit/server_test.rb
129
- create lib/newcli/commands/server.rb
130
- create lib/newcli/templates/server/.gitkeep
131
- inject lib/newcli/cli.rb
132
- OUT
133
-
134
- within_dir(app_name) do
135
- command = "teletype add server --no-color"
136
-
137
- out, err, status = Open3.capture3(command)
138
-
139
- expect(out).to match(output)
140
- expect(err).to eq('')
141
- expect(status.exitstatus).to eq(0)
142
-
143
- # test setup
144
- #
145
- expect(::File.read('test/integration/server_test.rb')).to eq <<-EOS
146
- require 'test_helper'
147
- require 'newcli/commands/server'
148
-
149
- class Newcli::Commands::ServerTest < Minitest::Test
150
- def test_executes_newcli_help_server_command_successfully
151
- output = `newcli help server`
152
- expected_output = <<-OUT
153
- Usage:
154
- newcli server
155
-
156
- Options:
157
- -h, [--help], [--no-help] # Display usage information
158
-
159
- Command description...
160
- OUT
161
-
162
- assert_equal expected_output, output
163
- end
164
- end
165
- EOS
166
-
167
- expect(::File.read('test/unit/server_test.rb')).to eq <<-EOS
168
- require 'test_helper'
169
- require 'newcli/commands/server'
170
-
171
- class Newcli::Commands::ServerTest < Minitest::Test
172
- def test_executes_server_command_successfully
173
- output = StringIO.new
174
- options = {}
175
- command = Newcli::Commands::Server.new(options)
176
-
177
- command.execute(output: output)
178
-
179
- assert_equal "OK\\n", output.string
180
- end
181
- end
182
- EOS
183
- end
184
- end
185
-
186
- it "adds command in cli without any commands" do
187
- app_path = tmp_path('newcli')
188
- cli_template = <<-EOS
189
- require 'thor'
190
-
191
- module Newcli
192
- class CLI < Thor
193
- end
194
- end
195
- EOS
196
- dir = {
197
- app_path => [
198
- 'lib' => [
199
- 'newcli' => [
200
- ['cli.rb', cli_template]
201
- ]
202
- ]
203
- ]
204
- }
205
-
206
- ::TTY::File.create_dir(dir, verbose: false)
207
- within_dir(app_path) do
208
- command = "teletype add server --no-color"
209
-
210
- _, err, status = Open3.capture3(command)
211
-
212
- expect(err).to eq('')
213
- expect(status.exitstatus).to eq(0)
214
-
215
- expect(::File.read('lib/newcli/cli.rb')).to eq <<-EOS
216
- require 'thor'
217
-
218
- module Newcli
219
- class CLI < Thor
220
-
221
- desc 'server', 'Command description...'
222
- method_option :help, aliases: '-h', type: :boolean,
223
- desc: 'Display usage information'
224
- def server(*)
225
- if options[:help]
226
- invoke :help, ['server']
227
- else
228
- require_relative 'commands/server'
229
- Newcli::Commands::Server.new(options).execute
230
- end
231
- end
232
- end
233
- end
234
- EOS
235
- end
236
- end
237
-
238
- it "adds more than one command to cli file" do
239
- app_path = tmp_path('newcli')
240
- cli_template = <<-EOS
241
- require 'thor'
242
-
243
- module Newcli
244
- class CLI < Thor
245
- end
246
- end
247
- EOS
248
- dir = {
249
- app_path => [
250
- 'lib' => [
251
- 'newcli' => [
252
- ['cli.rb', cli_template]
253
- ]
254
- ]
255
- ]
256
- }
257
-
258
- ::TTY::File.create_dir(dir, verbose: false)
259
- within_dir(app_path) do
260
- command_init = "teletype add init --no-color"
261
-
262
- out, err, status = Open3.capture3(command_init)
263
-
264
- expect(out).to eq <<-OUT
265
- create test/integration/init_test.rb
266
- create test/unit/init_test.rb
267
- create lib/newcli/commands/init.rb
268
- create lib/newcli/templates/init/.gitkeep
269
- inject lib/newcli/cli.rb
270
- OUT
271
- expect(err).to eq('')
272
- expect(status.exitstatus).to eq(0)
273
-
274
- expect(::File.read('lib/newcli/cli.rb')).to eq <<-EOS
275
- require 'thor'
276
-
277
- module Newcli
278
- class CLI < Thor
279
-
280
- desc 'init', 'Command description...'
281
- method_option :help, aliases: '-h', type: :boolean,
282
- desc: 'Display usage information'
283
- def init(*)
284
- if options[:help]
285
- invoke :help, ['init']
286
- else
287
- require_relative 'commands/init'
288
- Newcli::Commands::Init.new(options).execute
289
- end
290
- end
291
- end
292
- end
293
- EOS
294
-
295
- command_clone = "teletype add clone --no-color"
296
- out, err, status = Open3.capture3(command_clone)
297
-
298
- expect(out).to eq <<-OUT
299
- create test/integration/clone_test.rb
300
- create test/unit/clone_test.rb
301
- create lib/newcli/commands/clone.rb
302
- create lib/newcli/templates/clone/.gitkeep
303
- inject lib/newcli/cli.rb
304
- OUT
305
- expect(err).to eq('')
306
- expect(status.exitstatus).to eq(0)
307
-
308
- expect(::File.read('lib/newcli/cli.rb')).to eq <<-EOS
309
- require 'thor'
310
-
311
- module Newcli
312
- class CLI < Thor
313
-
314
- desc 'clone', 'Command description...'
315
- method_option :help, aliases: '-h', type: :boolean,
316
- desc: 'Display usage information'
317
- def clone(*)
318
- if options[:help]
319
- invoke :help, ['clone']
320
- else
321
- require_relative 'commands/clone'
322
- Newcli::Commands::Clone.new(options).execute
323
- end
324
- end
325
-
326
- desc 'init', 'Command description...'
327
- method_option :help, aliases: '-h', type: :boolean,
328
- desc: 'Display usage information'
329
- def init(*)
330
- if options[:help]
331
- invoke :help, ['init']
332
- else
333
- require_relative 'commands/init'
334
- Newcli::Commands::Init.new(options).execute
335
- end
336
- end
337
- end
338
- end
339
- EOS
340
- end
341
- end
342
-
343
- it "adds complex command name as camel case" do
344
- app_path = tmp_path('newcli')
345
- cli_template = <<-EOS
346
- require 'thor'
347
-
348
- module Newcli
349
- class CLI < Thor
350
- end
351
- end
352
- EOS
353
- dir = {
354
- app_path => [
355
- 'lib' => [
356
- 'newcli' => [
357
- ['cli.rb', cli_template]
358
- ]
359
- ]
360
- ]
361
- }
362
- ::TTY::File.create_dir(dir, verbose: false)
363
- within_dir(app_path) do
364
- command = "teletype add newServerCommand --no-color"
365
-
366
- _, err, status = Open3.capture3(command)
367
-
368
- expect(err).to eq('')
369
- expect(status.exitstatus).to eq(0)
370
-
371
- expect(::File.read('lib/newcli/commands/new_server_command.rb')).to eq <<-EOS
372
- # frozen_string_literal: true
373
-
374
- require_relative '../command'
375
-
376
- module Newcli
377
- module Commands
378
- class NewServerCommand < Newcli::Command
379
- def initialize(options)
380
- @options = options
381
- end
382
-
383
- def execute(input: $stdin, output: $stdout)
384
- # Command logic goes here ...
385
- output.puts "OK"
386
- end
387
- end
388
- end
389
- end
390
- EOS
391
-
392
- expect(::File.read('lib/newcli/cli.rb')).to eq <<-EOS
393
- require 'thor'
394
-
395
- module Newcli
396
- class CLI < Thor
397
-
398
- desc 'new_server_command', 'Command description...'
399
- method_option :help, aliases: '-h', type: :boolean,
400
- desc: 'Display usage information'
401
- def new_server_command(*)
402
- if options[:help]
403
- invoke :help, ['new_server_command']
404
- else
405
- require_relative 'commands/new_server_command'
406
- Newcli::Commands::NewServerCommand.new(options).execute
407
- end
408
- end
409
- end
410
- end
411
- EOS
412
- end
413
- end
414
-
415
- it "adds complex command name as snake case" do
416
- app_path = tmp_path('newcli')
417
- cli_template = <<-EOS
418
- require 'thor'
419
-
420
- module Newcli
421
- class CLI < Thor
422
- end
423
- end
424
- EOS
425
- dir = {
426
- app_path => [
427
- 'lib' => [
428
- 'newcli' => [
429
- ['cli.rb', cli_template]
430
- ]
431
- ]
432
- ]
433
- }
434
- ::TTY::File.create_dir(dir, verbose: false)
435
-
436
- within_dir(app_path) do
437
- command = "teletype add new_server_command --no-color"
438
-
439
- _, err, status = Open3.capture3(command)
440
-
441
- expect(err).to eq('')
442
- expect(status.exitstatus).to eq(0)
443
-
444
- expect(::File.read('lib/newcli/commands/new_server_command.rb')).to eq <<-EOS
445
- # frozen_string_literal: true
446
-
447
- require_relative '../command'
448
-
449
- module Newcli
450
- module Commands
451
- class NewServerCommand < Newcli::Command
452
- def initialize(options)
453
- @options = options
454
- end
455
-
456
- def execute(input: $stdin, output: $stdout)
457
- # Command logic goes here ...
458
- output.puts "OK"
459
- end
460
- end
461
- end
462
- end
463
- EOS
464
-
465
- expect(::File.read('lib/newcli/cli.rb')).to eq <<-EOS
466
- require 'thor'
467
-
468
- module Newcli
469
- class CLI < Thor
470
-
471
- desc 'new_server_command', 'Command description...'
472
- method_option :help, aliases: '-h', type: :boolean,
473
- desc: 'Display usage information'
474
- def new_server_command(*)
475
- if options[:help]
476
- invoke :help, ['new_server_command']
477
- else
478
- require_relative 'commands/new_server_command'
479
- Newcli::Commands::NewServerCommand.new(options).execute
480
- end
481
- end
482
- end
483
- end
484
- EOS
485
- end
486
- end
487
-
488
- it "fails without command name" do
489
- output = <<-OUT.unindent
490
- ERROR: 'teletype add' was called with no arguments
491
- Usage: 'teletype add COMMAND_NAME'\n
492
- OUT
493
- command = "teletype add"
494
- out, err, status = Open3.capture3(command)
495
- expect([out, err, status.exitstatus]).to match_array([output, '', 1])
496
- end
497
-
498
- it "displays help" do
499
- output = <<-OUT
500
- Usage:
501
- teletype add COMMAND [SUBCOMMAND] [OPTIONS]
502
-
503
- Options:
504
- -a, [--args=arg1 arg2] # List command argument names
505
- -d, [--desc=DESC] # Describe command's purpose
506
- -f, [--force] # Overwrite existing command
507
- -h, [--help], [--no-help] # Display usage information
508
- -t, [--test=rspec] # Generate a test setup
509
- # Possible values: rspec, minitest
510
- [--no-color] # Disable colorization in output
511
- -r, [--dry-run], [--no-dry-run] # Run but do not make any changes
512
- [--debug], [--no-debug] # Run in debug mode
513
-
514
- Description:
515
- The `teletype add` will create a new command and place it into appropriate
516
- structure in the cli app.
517
-
518
- Example: teletype add config --desc 'Set and get configuration options'
519
-
520
- This generates a command in app/commands/config.rb
521
-
522
- You can also add subcommands
523
-
524
- Example: teletype add config server
525
-
526
- This generates a command in app/commands/config/server.rb
527
- OUT
528
-
529
- command = "teletype add --help"
530
- out, err, status = Open3.capture3(command)
531
- expect(out).to eq(output)
532
- expect(err).to eq('')
533
- expect(status.exitstatus).to eq(0)
534
- end
535
- end