class Runbook::Generators::Project
Public Class Methods
description()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 7 def self.description "Generate a project for your runbooks" end
long_description()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 11 def self.long_description <<-LONG_DESC This generator generates a project for your runbooks. It creates a project skeleton to hold your runbooks, runbook extensions, shared code, configuration, tests, and dependencies. LONG_DESC end
Public Instance Methods
create_base_file()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 134 def create_base_file target = File.join( parent_options[:root], _name, "lib", "#{_name}.rb", ) template("templates/base_file.rb.tt", target) end
create_extensions_directory()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 197 def create_extensions_directory dirs = [ parent_options[:root], _name, "lib", "runbook", "extensions", ] target = File.join(*dirs) empty_directory(target) _keep_dir(target) end
create_gemfile()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 103 def create_gemfile target = File.join( parent_options[:root], _name, "Gemfile", ) template("templates/Gemfile.tt", target) # Add development dependencies from gemspec if @gemspec_file_contents gems = @gemspec_file_contents.select do |line| line =~ / spec.add_development_dependency/ end.map do |line| line.gsub(/ spec.add_development_dependency/, "gem") end.join append_to_file(target, "\n#{gems}", verbose: false) end # Add gemfile gems if @gemfile_file_contents gems = @gemfile_file_contents.select do |line| line =~ /^gem / end.join append_to_file(target, "\n#{gems}", verbose: false) end end
create_generators_directory()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 211 def create_generators_directory dirs = [ parent_options[:root], _name, "lib", "runbook", "generators", ] target = File.join(*dirs) empty_directory(target) _keep_dir(target) end
create_lib_directory()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 225 def create_lib_directory dirs = [ parent_options[:root], _name, @shared_lib_dir, ] target = File.join(*dirs) empty_directory(target) _keep_dir(target) end
create_readme()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 93 def create_readme target = File.join( parent_options[:root], _name, "README.md", ) template("templates/README.md.tt", target) end
create_ruby_gemset()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 165 def create_ruby_gemset target = File.join( parent_options[:root], _name, ".ruby-gemset", ) create_file(target, "#{_name}\n") end
create_ruby_version()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 155 def create_ruby_version target = File.join( parent_options[:root], _name, ".ruby-version", ) create_file(target, "ruby-#{RUBY_VERSION}\n") end
create_runbookfile()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 175 def create_runbookfile target = File.join( parent_options[:root], _name, "Runbookfile", ) template("templates/Runbookfile.tt", target) end
create_runbooks_directory()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 185 def create_runbooks_directory dirs = [ parent_options[:root], _name, "runbooks", ] target = File.join(*dirs) empty_directory(target) _keep_dir(target) end
init_gem()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 28 def init_gem bundle_exists = "which bundle 2>&1 1>/dev/null" raise "Please ensure bundle is installed" unless system(bundle_exists) bundler_version = Gem::Version.new(Bundler::VERSION) inside(parent_options[:root]) do test = "--test #{options[:test]}" ci = "--ci #{options[:ci]}" changelog = "--no-changelog" if bundler_version >= Gem::Version.new("2.2.8") continue = ( run("bundle gem #{_name} #{test} #{ci} --rubocop #{changelog} --no-coc --no-mit") || options[:pretend] ) exit 1 unless continue end end
modify_rakefile()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 145 def modify_rakefile target = File.join( parent_options[:root], _name, "Rakefile", ) gsub_file(target, /^require "bundler\/gem_tasks"\n/, "", verbose: false) end
remove_bad_test()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 256 def remove_bad_test path = [ parent_options[:root], _name, ] case options["test"] when "rspec" path << "spec" path << "#{_name}_spec.rb" when "minitest" path << "test" path << "#{_name}_test.rb" end target = File.join(*path) bad_test = / .*version.*\n.*\n end\n\n/m gsub_file(target, bad_test, "", verbose: false) end
remove_unneeded_files()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 45 def remove_unneeded_files dirs = [ parent_options[:root], _name, ] gemspec_file = File.join(*dirs, "#{_name}.gemspec") if File.exist?(gemspec_file) @gemspec_file_contents = File.readlines(gemspec_file) end remove_file(gemspec_file) readme = File.join(*dirs, "README.md") remove_file(readme) gemfile = File.join(*dirs, "Gemfile") if File.exist?(gemfile) @gemfile_file_contents = File.readlines(gemfile) end remove_file(gemfile) base_file = File.join(*dirs, "lib", "#{_name}.rb") remove_file(base_file) version_file_path = [ "lib", _name, "version.rb", ] version_file = File.join(*dirs, *version_file_path) remove_file(version_file) end
runbook_project_overview()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 276 def runbook_project_overview msg = [ "", "Your runbook project was successfully created.", "Remember to run `./bin/setup` in your project to install dependencies.", "Add runbooks to the `runbooks` directory.", "Add shared code to `#{@shared_lib_dir}`.", "Execute runbooks using `bundle exec runbook exec <RUNBOOK_PATH>` from your project root.", "See the README.md for more details.", "\n", ] say(msg.join("\n")) end
update_bin_console()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 237 def update_bin_console path = [ parent_options[:root], _name, "bin", "console", ] target = File.join(*path) old_require = /require "#{_name}"/ new_require = %Q(require_relative "../lib/#{_name}") new_require += "\n\nRunbook::Configuration.load_config" gsub_file(target, old_require, new_require, verbose: false) old_require = /require "#{_name}"/ new_require = %Q(require_relative "../lib/#{_name}") gsub_file(target, old_require, new_require, verbose: false) end
Private Instance Methods
_keep_dir(dir)
click to toggle source
# File lib/runbook/generators/project/project.rb, line 297 def _keep_dir(dir) create_file(File.join(dir, ".keep"), verbose: false) end
_name()
click to toggle source
# File lib/runbook/generators/project/project.rb, line 293 def _name @name ||= name.underscore end