Added init feature
This commit is contained in:
parent
bc5cc10d42
commit
057acfbb2f
@ -2,11 +2,12 @@ PATH
|
|||||||
remote: .
|
remote: .
|
||||||
specs:
|
specs:
|
||||||
guard (0.1.0.beta.1)
|
guard (0.1.0.beta.1)
|
||||||
|
bundler (~> 1.0.2)
|
||||||
growl (~> 1.0.3)
|
growl (~> 1.0.3)
|
||||||
libnotify (~> 0.1.3)
|
libnotify (~> 0.1.3)
|
||||||
rb-inotify (~> 0.8.1)
|
rb-inotify (~> 0.8.1)
|
||||||
sys-uname (~> 0.8.4)
|
sys-uname (~> 0.8.4)
|
||||||
thor (~> 0.14.2)
|
thor (~> 0.14.3)
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: http://rubygems.org/
|
remote: http://rubygems.org/
|
||||||
@ -15,6 +16,9 @@ GEM
|
|||||||
ffi (0.6.3)
|
ffi (0.6.3)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
growl (1.0.3)
|
growl (1.0.3)
|
||||||
|
guard-rspec (0.1.0.beta.2)
|
||||||
|
guard (~> 0.1.0.beta.1)
|
||||||
|
rspec (~> 2.0.0.rc)
|
||||||
libnotify (0.1.4)
|
libnotify (0.1.4)
|
||||||
ffi (>= 0.6.2)
|
ffi (>= 0.6.2)
|
||||||
rake (0.8.7)
|
rake (0.8.7)
|
||||||
@ -40,8 +44,9 @@ DEPENDENCIES
|
|||||||
bundler (~> 1.0.2)
|
bundler (~> 1.0.2)
|
||||||
growl (~> 1.0.3)
|
growl (~> 1.0.3)
|
||||||
guard!
|
guard!
|
||||||
|
guard-rspec (~> 0.1.0.beta.2)
|
||||||
libnotify (~> 0.1.3)
|
libnotify (~> 0.1.3)
|
||||||
rb-inotify (~> 0.8.1)
|
rb-inotify (~> 0.8.1)
|
||||||
rspec (~> 2.0.0.rc)
|
rspec (~> 2.0.0.rc)
|
||||||
sys-uname (~> 0.8.4)
|
sys-uname (~> 0.8.4)
|
||||||
thor (~> 0.14.2)
|
thor (~> 0.14.3)
|
||||||
|
@ -15,10 +15,11 @@ Gem::Specification.new do |s|
|
|||||||
s.required_rubygems_version = '>= 1.3.6'
|
s.required_rubygems_version = '>= 1.3.6'
|
||||||
s.rubyforge_project = 'guard'
|
s.rubyforge_project = 'guard'
|
||||||
|
|
||||||
s.add_development_dependency 'bundler', '~> 1.0.2'
|
|
||||||
s.add_development_dependency 'rspec', '~> 2.0.0.rc'
|
s.add_development_dependency 'rspec', '~> 2.0.0.rc'
|
||||||
|
s.add_development_dependency 'guard-rspec', '~> 0.1.0.beta.2'
|
||||||
|
|
||||||
s.add_dependency 'thor', '~> 0.14.2'
|
s.add_dependency 'bundler', '~> 1.0.2'
|
||||||
|
s.add_dependency 'thor', '~> 0.14.3'
|
||||||
s.add_dependency 'sys-uname', '~> 0.8.4'
|
s.add_dependency 'sys-uname', '~> 0.8.4'
|
||||||
# Mac OS X
|
# Mac OS X
|
||||||
s.add_dependency 'growl', '~> 1.0.3'
|
s.add_dependency 'growl', '~> 1.0.3'
|
||||||
|
21
lib/guard.rb
21
lib/guard.rb
@ -1,3 +1,5 @@
|
|||||||
|
require 'bundler'
|
||||||
|
|
||||||
module Guard
|
module Guard
|
||||||
|
|
||||||
autoload :UI, 'guard/ui'
|
autoload :UI, 'guard/ui'
|
||||||
@ -16,6 +18,9 @@ module Guard
|
|||||||
@guards = []
|
@guards = []
|
||||||
|
|
||||||
Dsl.evaluate_guardfile
|
Dsl.evaluate_guardfile
|
||||||
|
if guards.empty?
|
||||||
|
UI.error "No guards found in Guardfile, too bad."
|
||||||
|
else
|
||||||
Interactor.init_signal_traps
|
Interactor.init_signal_traps
|
||||||
|
|
||||||
listener.on_change do |files|
|
listener.on_change do |files|
|
||||||
@ -31,11 +36,24 @@ module Guard
|
|||||||
guards.each(&:start)
|
guards.each(&:start)
|
||||||
listener.start
|
listener.start
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def add_guard(name, watchers = [], options = {})
|
def add_guard(name, watchers = [], options = {})
|
||||||
|
guard_class = get_guard_class(name)
|
||||||
|
@guards << guard_class.new(watchers, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_guard_class(name)
|
||||||
require "guard/#{name.downcase}"
|
require "guard/#{name.downcase}"
|
||||||
guard_class = ObjectSpace.each_object(Class).detect { |c| c.to_s.downcase.match "^guard::#{name.downcase}" }
|
guard_class = ObjectSpace.each_object(Class).detect { |c| c.to_s.downcase.match "^guard::#{name.downcase}" }
|
||||||
@guards << guard_class.new(watchers, options)
|
rescue LoadError
|
||||||
|
UI.error "#{name} guard gem not found, try to add it to your Gemfile."
|
||||||
|
end
|
||||||
|
|
||||||
|
def locate_guard(name)
|
||||||
|
spec = Bundler.load.specs.find{|s| s.name == "guard-#{name}" }
|
||||||
|
UI.error "Could not find gem '#{name}' in the current Gemfile." unless spec
|
||||||
|
spec.full_gem_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def run
|
def run
|
||||||
@ -45,5 +63,4 @@ module Guard
|
|||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
@ -16,5 +16,22 @@ module Guard
|
|||||||
Guard::UI.info "Guard version #{Guard::VERSION}"
|
Guard::UI.info "Guard version #{Guard::VERSION}"
|
||||||
end
|
end
|
||||||
map %w(-v --version) => :version
|
map %w(-v --version) => :version
|
||||||
|
|
||||||
|
desc "init [GUARD]", "Generates a Guardfile into the current working directory, or add it given guard"
|
||||||
|
def init(guard_name = nil)
|
||||||
|
if !File.exist?("Guardfile")
|
||||||
|
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
|
end
|
||||||
end
|
end
|
@ -10,14 +10,18 @@ module Guard
|
|||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.guardfile_included?(guard_name)
|
||||||
|
File.read('Guardfile').include?("guard '#{guard_name}'")
|
||||||
|
end
|
||||||
|
|
||||||
def guard(name, options = {}, &definition)
|
def guard(name, options = {}, &definition)
|
||||||
@watchers = []
|
@watchers = []
|
||||||
definition.call
|
definition.call if definition
|
||||||
Guard.add_guard(name, @watchers, options)
|
::Guard.add_guard(name, @watchers, options)
|
||||||
end
|
end
|
||||||
|
|
||||||
def watch(pattern, &action)
|
def watch(pattern, &action)
|
||||||
@watchers << Guard::Watcher.new(pattern, action)
|
@watchers << ::Guard::Watcher.new(pattern, action)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -6,6 +6,22 @@ module Guard
|
|||||||
@watchers, @options = watchers, options
|
@watchers, @options = watchers, options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Guardfile template needed inside guard gem
|
||||||
|
def self.init(name)
|
||||||
|
if ::Guard::Dsl.guardfile_included?(name)
|
||||||
|
::Guard::UI.info "Guardfile already include #{name} guard"
|
||||||
|
else
|
||||||
|
content = File.read('Guardfile')
|
||||||
|
guard = File.read("#{::Guard.locate_guard(name)}/lib/guard/#{name}/templates/Guardfile")
|
||||||
|
File.open('Guardfile', 'wb') do |f|
|
||||||
|
f.puts content
|
||||||
|
f.puts ""
|
||||||
|
f.puts guard
|
||||||
|
end
|
||||||
|
::Guard::UI.info "#{name} guard added to Guardfile, feel free to edit it"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# ================
|
# ================
|
||||||
# = Guard method =
|
# = Guard method =
|
||||||
# ================
|
# ================
|
||||||
|
2
lib/guard/templates/Guardfile
Normal file
2
lib/guard/templates/Guardfile
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# A sample Guardfile
|
||||||
|
# More info at http://github.com/guard/guard#readme
|
@ -5,7 +5,7 @@ module Guard
|
|||||||
def info(message, options = {})
|
def info(message, options = {})
|
||||||
unless ENV["GUARD_ENV"] == "test"
|
unless ENV["GUARD_ENV"] == "test"
|
||||||
reset_line if options[:reset]
|
reset_line if options[:reset]
|
||||||
clear if options.key?(:clear) ? options[:clear] : ::Guard.options[:clear]
|
clear if options.key?(:clear) ? options[:clear] : (::Guard.options && ::Guard.options[:clear])
|
||||||
puts reset_color(message) if message != ''
|
puts reset_color(message) if message != ''
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user