Move the template initialization to the Guard module and add specs.
This commit is contained in:
parent
cdf0906614
commit
4451d73583
22
lib/guard.rb
22
lib/guard.rb
@ -18,6 +18,28 @@ module Guard
|
|||||||
class << self
|
class << self
|
||||||
attr_accessor :options, :interactor, :listener
|
attr_accessor :options, :interactor, :listener
|
||||||
|
|
||||||
|
# Creates the initial Guardfile template or add a Guard implementation
|
||||||
|
# Guardfile template to an existing Guardfile.
|
||||||
|
#
|
||||||
|
# @see Guard::Guard.init
|
||||||
|
#
|
||||||
|
# @param [String] guard_name the name of the Guard to initialize
|
||||||
|
#
|
||||||
|
def initialize_template(guard_name = nil)
|
||||||
|
if guard_name
|
||||||
|
guard_class = ::Guard.get_guard_class(guard_name)
|
||||||
|
guard_class.init(guard_name)
|
||||||
|
else
|
||||||
|
if !File.exist?('Guardfile')
|
||||||
|
::Guard::UI.info "Writing new Guardfile to #{ Dir.pwd }/Guardfile"
|
||||||
|
FileUtils.cp(File.expand_path('../templates/Guardfile', __FILE__), 'Guardfile')
|
||||||
|
else
|
||||||
|
::Guard::UI.error "Guardfile already exists at #{ Dir.pwd }/Guardfile"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Initialize the Guard singleton.
|
# Initialize the Guard singleton.
|
||||||
#
|
#
|
||||||
# @option options [Boolean] clear if auto clear the UI should be done
|
# @option options [Boolean] clear if auto clear the UI should be done
|
||||||
|
@ -3,8 +3,9 @@ require 'guard/version'
|
|||||||
|
|
||||||
module Guard
|
module Guard
|
||||||
|
|
||||||
# Guard command line interface managed by [Thor](https://github.com/wycats/thor).
|
# Facade for the Guard command line interface managed by [Thor](https://github.com/wycats/thor).
|
||||||
# This is the main interface to Guard that is called by the Guard binary `bin/guard`.
|
# This is the main interface to Guard that is called by the Guard binary `bin/guard`.
|
||||||
|
# Do not put any logic in here, create a class and delegate instead.
|
||||||
#
|
#
|
||||||
class CLI < Thor
|
class CLI < Thor
|
||||||
|
|
||||||
@ -66,6 +67,8 @@ module Guard
|
|||||||
# List the Guards that are available for use in your system and marks
|
# List the Guards that are available for use in your system and marks
|
||||||
# those that are currently used in your `Guardfile`.
|
# those that are currently used in your `Guardfile`.
|
||||||
#
|
#
|
||||||
|
# @see Guard::DslDescriber.list
|
||||||
|
#
|
||||||
def list
|
def list
|
||||||
Guard::DslDescriber.list(options)
|
Guard::DslDescriber.list(options)
|
||||||
end
|
end
|
||||||
@ -86,21 +89,12 @@ module Guard
|
|||||||
# Appends the Guard template to the `Guardfile`, or creates an initial
|
# Appends the Guard template to the `Guardfile`, or creates an initial
|
||||||
# `Guardfile` when no Guard name is passed.
|
# `Guardfile` when no Guard name is passed.
|
||||||
#
|
#
|
||||||
|
# @see Guard.initialize_template
|
||||||
|
#
|
||||||
# @param [String] guard_name the name of the Guard to initialize
|
# @param [String] guard_name the name of the Guard to initialize
|
||||||
#
|
#
|
||||||
def init(guard_name = nil)
|
def init(guard_name = nil)
|
||||||
if !File.exist?('Guardfile')
|
Guard.initialize_template(guard_name)
|
||||||
puts "Writing new Guardfile to #{Dir.pwd}/Guardfile"
|
|
||||||
FileUtils.cp(File.expand_path('../templates/Guardfile', __FILE__), 'Guardfile')
|
|
||||||
elsif guard_name.nil?
|
|
||||||
Guard::UI.error "Guardfile already exists at #{ Dir.pwd }/Guardfile"
|
|
||||||
exit 1
|
|
||||||
end
|
|
||||||
|
|
||||||
if guard_name
|
|
||||||
guard_class = ::Guard.get_guard_class(guard_name)
|
|
||||||
guard_class.init(guard_name)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
desc 'show', 'Show all defined Guards and their options'
|
desc 'show', 'Show all defined Guards and their options'
|
||||||
@ -109,6 +103,8 @@ module Guard
|
|||||||
# Shows all Guards and their options that are defined in
|
# Shows all Guards and their options that are defined in
|
||||||
# the `Guardfile`.
|
# the `Guardfile`.
|
||||||
#
|
#
|
||||||
|
# @see Guard::DslDescriber.show
|
||||||
|
#
|
||||||
def show
|
def show
|
||||||
Guard::DslDescriber.show(options)
|
Guard::DslDescriber.show(options)
|
||||||
end
|
end
|
||||||
|
@ -3,6 +3,45 @@ require 'guard/guard'
|
|||||||
|
|
||||||
describe Guard do
|
describe Guard do
|
||||||
|
|
||||||
|
describe ".initialize_template" do
|
||||||
|
context "with a Guard name" do
|
||||||
|
it "initializes a the Guard" do
|
||||||
|
class Guard::TestGuard < Guard::Guard
|
||||||
|
end
|
||||||
|
Guard::TestGuard.should_receive(:init)
|
||||||
|
Guard.initialize_template('test-guard')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "without a Guard name" do
|
||||||
|
context "with an existing Guardfile" do
|
||||||
|
before do
|
||||||
|
File.stub(:exist?).and_return true
|
||||||
|
Dir.stub(:pwd).and_return "/home/user"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "shows an error" do
|
||||||
|
Guard.should_receive(:exit).with 1
|
||||||
|
::Guard::UI.should_receive(:error).with("Guardfile already exists at /home/user/Guardfile")
|
||||||
|
Guard.initialize_template()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "without an existing Guardfile" do
|
||||||
|
before do
|
||||||
|
File.stub(:exist?).and_return false
|
||||||
|
Dir.stub(:pwd).and_return "/home/user"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "copies the Guardfile template" do
|
||||||
|
::Guard::UI.should_receive(:info).with("Writing new Guardfile to /home/user/Guardfile")
|
||||||
|
FileUtils.should_receive(:cp).with(an_instance_of(String), 'Guardfile')
|
||||||
|
Guard.initialize_template()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe ".setup" do
|
describe ".setup" do
|
||||||
subject { ::Guard.setup }
|
subject { ::Guard.setup }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user