Skip to content

Commit e58204d

Browse files
authored
bin/generate usage instructions. (#461)
Give usage instructions when bin/generate is called with no arguments. The instructions also provide a list of the available generators. Return 0 on exit when providing usage information. It wasn't REALLY an error situation, the script completed correctly, you just didn't provide enough arguments for it to do anything else. Move 'require's up to the top of the file. Send error component of the message to stderr.
1 parent c094325 commit e58204d

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

bin/generate

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,29 @@
11
#!/usr/bin/env ruby
22

3+
require_relative '../lib/helper'
4+
require 'generator'
5+
6+
def available_generators
7+
cases = File.join( __dir__, '../lib/*_cases.rb')
8+
Dir[cases].map {|filename| /([^\/]*)_cases\.rb$/.match(filename).captures}
9+
end
10+
11+
def usage
12+
"Usage: #{$PROGRAM_NAME} exercise_generator\n\n" +
13+
"Available exercise generators:\n" +
14+
available_generators.sort.join(' ')
15+
end
16+
317
exercise = ARGV[0]
18+
19+
unless exercise
20+
STDERR.puts "Exercise name required!\n"
21+
puts usage
22+
exit
23+
end
24+
425
cases = "#{exercise.tr('-','_')}_cases"
526

6-
require_relative '../lib/helper'
7-
require 'generator'
827
begin
928
require "#{cases}"
1029
rescue LoadError
@@ -14,3 +33,4 @@ end
1433

1534
klass = Object.const_get(cases.split('_').map(&:capitalize).join)
1635
Generator.new(exercise, klass).generate
36+

0 commit comments

Comments
 (0)