lib/aigu/cli.rb in aigu-0.4.5 vs lib/aigu/cli.rb in aigu-0.5
- old
+ new
@@ -1,23 +1,37 @@
module Aigu
class CLI
+ COMMANDS = {
+ 'rails-import' => 'RailsImporter',
+ 'rails-export' => 'RailsExporter',
+ 'android-import' => 'AndroidImporter',
+ 'android-export' => 'AndroidExporter',
+ 'core-import' => 'CoreImporter',
+ 'core-export' => 'CoreExporter',
+ 'ios-import' => 'IOSImporter',
+ 'ios-export' => 'IOSExporter',
+ 'ember-import' => 'EmberImporter',
+ 'ember-export' => 'EmberExporter',
+ 'merge' => 'Merger',
+ 'unmerge' => 'Unmerger'
+ }
+
def initialize(env, argv)
@env = env
@command = argv.first =~ /^[^-]/ ? argv.shift : nil
+ @command = @command.gsub('_', '-') if @command
@argv = argv
@options = {}
@options = parse_options_from_yaml(@options)
@options = parse_options_from_arguments(@options)
end
def run
- service_name = "#{@command}er".split('_').map(&:capitalize).join
-
- begin
- service_class = Aigu.const_get(service_name)
- rescue NameError
- puts "The Aigu::#{service_name} service doesn’t exist. Nice try."
+ if COMMANDS[@command]
+ service_class = Aigu.const_get(COMMANDS[@command])
+ else
+ puts "The #{@command} command doesn’t exist. Nice try."
exit 0
end
service_object = service_class.new(@options)
service_object.process!
@@ -40,10 +54,17 @@
end
# rubocop:disable Metrics/MethodLength
def parse_options_from_arguments(options)
OptionParser.new do |opts|
- opts.banner = 'Usage: aigu [options]'
+ opts.banner = <<DOC
+"Usage: aigu <command> [options]"
+
+Commands:
+#{COMMANDS.keys.map { |command| " #{command}" }.join("\n")}
+
+Options:
+DOC
opts.on('--input-directory=', 'The directory in which the Rails YAML localization files are stored.') do |directory|
options[:'input-directory'] = directory
end