lib/watir_install/cli.rb in watir_install-0.2.1 vs lib/watir_install/cli.rb in watir_install-0.3.0

- old
+ new

@@ -1,19 +1,71 @@ require 'thor' -require 'watir_install/generators/new_project' +require 'require_all' +require_rel 'generators' module WatirInstall class CLI < Thor desc "new <project_name>", "Create a new test project" method_option :no_git, type: :boolean, desc: "Do not initialize project with git" - method_option :test_runner, type: :string, desc: "Do not initialize project with git" - def new(name) - no_git = options[:no_git] ? 'true' : 'false' - test_runner = options[:test_runner] - WatirInstall::Generators::NewProject.start([name, no_git, test_runner]) + WatirInstall::Generators::New.start([name, options[:no_git]]) end - + + desc "generate <generated_type>", "Generate a new object" + method_option :url, type: :string, desc: "Do not initialize project with git" + method_option :form, type: :string, desc: "Do not initialize project with git" + + def generate(generated_type, klass, *args) + url = options[:url] || '' + form = options[:form] || '' + + send("generate_#{generated_type}", klass, url, form, *args) + end + + desc "generate_data <Class>", "Generate a new data object" + + def generate_data(klass, _url, _form, *args) + WatirInstall::Generators::Data.start([klass, *args]) + end + + desc "generate_page <Class>", "Generate a new page object" + + def generate_page(klass, url, form, *args) + form = klass[/[^:]*$/] if form == 'true' + klass = klass[/^[^:]*/] + WatirInstall::Generators::Page.start([klass, url, form, *args]) + end + + desc "generate_test <Class>", "Generate a new test" + + def generate_test(klass, _url, form, *args) + WatirInstall::Generators::Test.start([klass, form, *args]) + end + + desc "generate_scaffold <Class>", "Generate collection of data, pages and tests" + + def generate_scaffold(klass, url, form, *args) + WatirInstall::Generators::Test.start([klass, 'true']) + + WatirInstall::Generators::Data.start([klass, *args]) + + new_url = url.nil? ? '' : "#{url}/new" + + WatirInstall::Generators::Page.start(["#{klass}::List", url, '']) + WatirInstall::Generators::Page.start(["#{klass}::New", new_url, klass, *args]) + # TODO: generate dynamic url method for Show & Edit + WatirInstall::Generators::Page.start(["#{klass}::Show", '', '', *args]) + WatirInstall::Generators::Page.start(["#{klass}::Edit", '', klass, *args]) + end + + desc "example", "Create a new test project" + method_option :no_git, type: :boolean, desc: "Do not initialize project with git" + + def example + WatirInstall::Generators::New.start(['google_search', options[:no_git]]) + WatirInstall::Generators::Example.start + end + end end