lib/cukedep/application.rb in cukedep-0.1.10 vs lib/cukedep/application.rb in cukedep-0.1.11

- old
+ new

@@ -6,109 +6,107 @@ require_relative 'gherkin-listener' require_relative 'gherkin-facade' require_relative 'feature-model' module Cukedep # Module used as a namespace + # Runner for the Cukedep application. + class Application + attr_reader(:proj_dir) + + public -# Runner for the Cukedep application. -class Application - attr_reader(:proj_dir) - - public + # Entry point for the application object. + def run!(theCmdLineArgs) + options = options_from(theCmdLineArgs) + create_default_cfg if options[:setup] + config = Config.load_cfg(Cukedep::YMLFilename) - # Entry point for the application object. - def run!(theCmdLineArgs) - options = options_from(theCmdLineArgs) - create_default_cfg if options[:setup] - config = Config.load_cfg(Cukedep::YMLFilename) - - # Complain if no project dir is specified - if config.proj_dir.nil? || config.proj_dir.empty? - if options[:project] - @proj_dir = options[:project] + # Complain if no project dir is specified + if config.proj_dir.nil? || config.proj_dir.empty? + if options[:project] + @proj_dir = options[:project] + else + msg_p1 = "No project dir specified in '#{Cukedep::YMLFilename}'" + msg_p2 = ' nor via --project option.' + fail(StandardError, msg_p1 + msg_p2) + end else - msg_p1 = "No project dir specified in '#{Cukedep::YMLFilename}'" - msg_p2 = ' nor via --project option.' - fail(StandardError, msg_p1 + msg_p2) + @proj_dir = config.proj_dir end - else - @proj_dir = config.proj_dir - end - feature_files = parse_features(config.feature_encoding) - - model = FeatureModel.new(feature_files) - generate_files(model, config) + feature_files = parse_features(config.feature_encoding) + + model = FeatureModel.new(feature_files) + generate_files(model, config) - return if options[:dryrun] - rake_cmd = 'rake -f cukedep.rake' - system(rake_cmd) - end + return if options[:dryrun] + rake_cmd = 'rake -f cukedep.rake' + system(rake_cmd) + end - protected + protected - # Retrieve the user-entered command-line options - def options_from(theCmdLineArgs) - cli = CLI::CmdLine.new - cli.parse!(theCmdLineArgs.dup) - end - - - # Create a local copy of the .cukedep.yml file, then - # stop the application. - def create_default_cfg() - if File.exist?(Cukedep::YMLFilename) - puts "OK to overwrite file #{Cukedep::YMLFilename}." - puts '(Y/N)?' - answer = $stdin.gets - exit if answer =~ /^\s*[Nn]\s*$/ + # Retrieve the user-entered command-line options + def options_from(theCmdLineArgs) + cli = CLI::CmdLine.new + cli.parse!(theCmdLineArgs.dup) end - Config.default.write(Cukedep::YMLFilename) - exit - end - - # # Read the .cukedep.yml file in the current working directory - # def load_cfg() - # if File.exist?(Cukedep::YMLFilename) - # YAML.load_file(Cukedep::YMLFilename) - # else - # Config.default - # end - # end + # Create a local copy of the .cukedep.yml file, then + # stop the application. + def create_default_cfg() + if File.exist?(Cukedep::YMLFilename) + puts "OK to overwrite file #{Cukedep::YMLFilename}." + puts '(Y/N)?' + answer = $stdin.gets + exit if answer =~ /^\s*[Nn]\s*$/ + end + Config.default.write(Cukedep::YMLFilename) - - # Parse the feature files (with the specified external encoding) - def parse_features(external_encoding) - # Create a Gherkin listener - listener = Cukedep::GherkinListener.new + exit + end - # Parse the feature files in work directory - is_verbose = true - gherkin_facade = GherkinFacade.new(is_verbose, external_encoding) - gherkin_facade.parse_features(listener, ['*.feature']) - return listener.feature_files - end + # # Read the .cukedep.yml file in the current working directory + # def load_cfg() + # if File.exist?(Cukedep::YMLFilename) + # YAML.load_file(Cukedep::YMLFilename) + # else + # Config.default + # end + # end - def generate_files(aModel, aConfig) - # Sort the feature files by dependency order. - aModel.sort_features_by_dep - - puts "\nGenerating:" - - # Generate CSV files detailing the feature to identifier mapping - # and vise versa - # TODO: replace hard-coded names by value from config - feature2id_report = aConfig.feature2id.name - id2feature_report = aConfig.id2feature.name - aModel.mapping_reports(feature2id_report, id2feature_report, true) - aModel.draw_dependency_graph(aConfig.graph_file.name, true) - aModel.generate_rake_tasks(aConfig.rake_file, proj_dir) - end -end # class + # Parse the feature files (with the specified external encoding) + def parse_features(external_encoding) + # Create a Gherkin listener + listener = Cukedep::GherkinListener.new + + # Parse the feature files in work directory + is_verbose = true + gherkin_facade = GherkinFacade.new(is_verbose, external_encoding) + gherkin_facade.parse_features(listener, ['*.feature']) + return listener.feature_files + end + + + def generate_files(aModel, aConfig) + # Sort the feature files by dependency order. + aModel.sort_features_by_dep + + puts "\nGenerating:" + + # Generate CSV files detailing the feature to identifier mapping + # and vise versa + # TODO: replace hard-coded names by value from config + feature2id_report = aConfig.feature2id.name + id2feature_report = aConfig.id2feature.name + aModel.mapping_reports(feature2id_report, id2feature_report, true) + aModel.draw_dependency_graph(aConfig.graph_file.name, true) + aModel.generate_rake_tasks(aConfig.rake_file, proj_dir) + end + end # class end # module # End of file