lib/cukedep/application.rb in cukedep-0.1.11 vs lib/cukedep/application.rb in cukedep-0.2.00
- old
+ new
@@ -1,112 +1,105 @@
-# File: application.rb
-
-
-require_relative 'cli/cmd-line'
-require_relative 'config'
-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
-
- # 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]
- else
- msg_p1 = "No project dir specified in '#{Cukedep::YMLFilename}'"
- msg_p2 = ' nor via --project option.'
- fail(StandardError, msg_p1 + msg_p2)
- end
- else
- @proj_dir = config.proj_dir
- end
-
- 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
-
- 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*$/
- 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
-
-
- # 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
+# File: application.rb
+
+require_relative 'cli/cmd-line'
+require_relative 'config'
+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)
+
+ # 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]
+ else
+ msg_p1 = "No project dir specified in '#{Cukedep::YMLFilename}'"
+ msg_p2 = ' nor via --project option.'
+ raise StandardError, msg_p1 + msg_p2
+ end
+ else
+ @proj_dir = config.proj_dir
+ end
+
+ 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
+
+ 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*$/
+ 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
+
+ # 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