module JsonVoorhees class MassiveScaffoldGenerator < Rails::Generators::Base source_root File.expand_path('../templates', __FILE__) argument :module_name, :type => :string argument :resource_name, :type => :string argument :api_version, :type => :string, :default => "1" argument :attributes, type: :array, default: [], banner: "field:type field:type" class_option :both, :type => :boolean, :default => true, :description => "Run the rails scaffold in addition to this one" class_option :model, :type => :boolean, :default => true, :description => "Create model stub tests" class_option :request, :type => :boolean, :default => true, :description => "Create request stub tests" class_option :routing, :type => :boolean, :default => true, :description => "Create routing stub tests" class_option :arcadex, :type => :boolean, :default => true, :description => "Send requests with an arcadex header" class_option :active_admin, :type => :boolean, :default => true, :description => "Generate the admin resource" def sprint inside "engines/#{module_name.underscore}" do if options.both? # We should skip making the migration if this is not version 1 if api_version != "1" run "rails g scaffold #{resource_name} #{attributes.join(" ")} --no-migration " else run "rails g scaffold #{resource_name} #{attributes.join(" ")}" end end if options.arcadex? run "rails g json_voorhees:engine_scaffold #{module_name} #{resource_name} #{api_version} #{attributes.join(" ")}" else run "rails g json_voorhees:engine_scaffold #{module_name} #{resource_name} #{api_version} #{attributes.join(" ")} --skip-arcadex" end end if options.arcadex? run "rails g json_voorhees:app_scaffold #{module_name} #{resource_name} #{api_version} #{attributes.join(" ")}" else run "rails g json_voorhees:app_scaffold #{module_name} #{resource_name} #{api_version} #{attributes.join(" ")} --skip-arcadex" end if options.active_admin? run "rails generate active_admin:resource #{module_name.underscore.downcase}::#{resource_name.singularize.underscore.downcase}" end end private end end