require 'tty/file' require 'tty/command' require 'tty/which' module Barman module ProjectGenerators class QA attr_reader :project_name, :options, :project_path, :test_path, :templates_path def initialize(project_name, options) @project_name = project_name @options = options @templates_path = File.join(Barman.templates_path, "qa") @project_path = File.join(".", project_name.to_s) @test_path = File.join(project_path, "test") end def generate! create_project_dir create_test_dir copy_template_files install_gems end private def create_project_dir TTY::File.create_dir(project_path) end def create_test_dir TTY::File.create_dir test_path create_support_dir end def create_support_dir TTY::File.create_dir File.join(test_path, "support") end def copy_template_files TTY::File.copy_file(File.join(templates_path, "Gemfile"), File.join(project_path, "Gemfile")) TTY::File.copy_file(File.join(templates_path, "Rakefile"), File.join(project_path, "Rakefile")) TTY::File.copy_file(File.join(templates_path, "test_helper.rb"), File.join(project_path, "test", "test_helper.rb")) TTY::File.copy_file(File.join(templates_path, "truth_test.rb"), File.join(project_path, "test", "truth_test.rb")) TTY::File.copy_file(File.join(templates_path, "multidevice.rb"), File.join(project_path, "test", "support", "multidevice.rb")) end def install_gems cmd = TTY::Command.new unless TTY::Which.exist?('bundle') cmd.run("gem install bundler") end cmd.run("bundle install", chdir: project_path) end end end end