class Guard::Guardfile::Generator
This class is responsible for generating the Guardfile and adding Guard' plugins' templates into it.
@see Guard::CLI
Constants
- GUARDFILE_TEMPLATE
The Guardfile template for `guard init`
- HOME_TEMPLATES
home isn't defined. Set to the root of the drive. Trust that there won't be user defined templates there
- INFO_TEMPLATE_ADDED
Public Instance Methods
create_guardfile()
click to toggle source
Creates the initial Guardfile template when it does not already exist.
@see Guard::CLI#init
# File lib/guard/guardfile/generator.rb, line 65 def create_guardfile path = Pathname.new("Guardfile").expand_path if path.exist? _ui(:error, "Guardfile already exists at #{path}") abort end _ui(:info, "Writing new Guardfile to #{path}") FileUtils.cp(GUARDFILE_TEMPLATE, path.to_s) end
initialize_all_templates()
click to toggle source
Adds the templates of all installed Guard implementations to an existing Guardfile.
@see Guard::CLI#init
# File lib/guard/guardfile/generator.rb, line 117 def initialize_all_templates PluginUtil.plugin_names.each { |g| initialize_template(g) } end
initialize_template(plugin_name)
click to toggle source
Adds the Guardfile template of a Guard plugin to an existing Guardfile.
@see Guard::CLI#init
@param [String] plugin_name the name of the Guard plugin or template to
initialize
# File lib/guard/guardfile/generator.rb, line 83 def initialize_template(plugin_name) guardfile = Pathname.new("Guardfile") plugin_util = PluginUtil.new(plugin_name) # TODO: change to "valid?" method plugin_class = plugin_util.plugin_class(fail_gracefully: true) if plugin_class begin plugin_util.add_to_guardfile rescue Errno::ENOENT => error # TODO: refactor template = plugin_class.template(plugin_util.plugin_location) _ui(:error, "Found class #{plugin_class} but loading it's template"\ "failed: '#{template}'") _ui(:error, "Error is: #{error}") return end return end template_code = (HOME_TEMPLATES + plugin_name).read guardfile.binwrite(format("\n%s\n", template_code), open_args: ["a"]) _ui(:info, format(INFO_TEMPLATE_ADDED, plugin_name)) rescue Errno::ENOENT fail NoSuchPlugin, plugin_name.downcase end
Private Instance Methods
_ui(*args)
click to toggle source
# File lib/guard/guardfile/generator.rb, line 123 def _ui(*args) UI.send(*args) end