Merge branch 'enhancements' of https://github.com/mislav/guard into mislav-enhancements
This commit is contained in:
commit
7360e4a8cd
@ -1,6 +1,5 @@
|
|||||||
# -*- encoding: utf-8 -*-
|
# -*- encoding: utf-8 -*-
|
||||||
$:.push File.expand_path('../lib', __FILE__)
|
Kernel.load File.expand_path('../lib/guard/version.rb', __FILE__)
|
||||||
require 'guard/version'
|
|
||||||
|
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = 'guard'
|
s.name = 'guard'
|
||||||
@ -8,9 +7,9 @@ Gem::Specification.new do |s|
|
|||||||
s.platform = Gem::Platform::RUBY
|
s.platform = Gem::Platform::RUBY
|
||||||
s.authors = ['Thibaud Guillaume-Gentil']
|
s.authors = ['Thibaud Guillaume-Gentil']
|
||||||
s.email = ['thibaud@thibaud.me']
|
s.email = ['thibaud@thibaud.me']
|
||||||
s.homepage = 'http://rubygems.org/gems/guard'
|
s.homepage = 'https://github.com/guard/guard'
|
||||||
s.summary = 'Guard keep an eye on your files modifications.'
|
s.summary = 'Guard keeps an eye on your file modifications'
|
||||||
s.description = 'Guard is a command line tool to easily handle events on files modifications.'
|
s.description = 'Guard is a command line tool to easily handle events on file system modifications.'
|
||||||
|
|
||||||
s.required_rubygems_version = '>= 1.3.6'
|
s.required_rubygems_version = '>= 1.3.6'
|
||||||
s.rubyforge_project = 'guard'
|
s.rubyforge_project = 'guard'
|
||||||
@ -21,7 +20,7 @@ Gem::Specification.new do |s|
|
|||||||
|
|
||||||
s.add_dependency 'thor', '~> 0.14.6'
|
s.add_dependency 'thor', '~> 0.14.6'
|
||||||
|
|
||||||
s.files = Dir.glob('{bin,images,lib}/**/*') + %w[LICENSE README.md]
|
s.files = Dir.glob('{bin,images,lib}/**/*') + %w[LICENSE README.md CHANGELOG.md]
|
||||||
s.executable = 'guard'
|
s.executable = 'guard'
|
||||||
s.require_path = 'lib'
|
s.require_path = 'lib'
|
||||||
end
|
end
|
||||||
|
18
lib/guard.rb
18
lib/guard.rb
@ -81,15 +81,21 @@ module Guard
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_guard_class(name)
|
def get_guard_class(name)
|
||||||
try_to_load_gem(name)
|
try_require = false
|
||||||
self.const_get(self.constants.find { |klass_name| klass_name.to_s.downcase == name.to_s.downcase.gsub('-', '') })
|
const_name = name.to_s.downcase.gsub('-', '')
|
||||||
|
begin
|
||||||
|
require "guard/#{name.downcase}" if try_require
|
||||||
|
self.const_get(self.constants.find {|c| c.to_s.downcase == const_name })
|
||||||
rescue TypeError
|
rescue TypeError
|
||||||
UI.error "Could not find load find gem 'guard-#{name}' or find class Guard::#{name}"
|
unless try_require
|
||||||
|
try_require = true
|
||||||
|
retry
|
||||||
|
else
|
||||||
|
UI.error "Could not find class Guard::#{const_name.capitalize}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def try_to_load_gem(name)
|
|
||||||
require "guard/#{name.to_s.downcase}"
|
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
|
UI.error "Could not load 'guard/#{name.downcase}' or find class Guard::#{const_name.capitalize}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def locate_guard(name)
|
def locate_guard(name)
|
||||||
|
@ -23,10 +23,13 @@ module Guard
|
|||||||
|
|
||||||
def self.usable?
|
def self.usable?
|
||||||
require 'rb-fsevent'
|
require 'rb-fsevent'
|
||||||
if !defined?(FSEvent::VERSION) || Gem::Version.new(FSEvent::VERSION) < Gem::Version.new('0.4.0')
|
if !defined?(FSEvent::VERSION) || (defined?(Gem::Version) &&
|
||||||
|
Gem::Version.new(FSEvent::VERSION) < Gem::Version.new('0.4.0'))
|
||||||
UI.info "Please update rb-fsevent (>= 0.4.0)"
|
UI.info "Please update rb-fsevent (>= 0.4.0)"
|
||||||
end
|
false
|
||||||
|
else
|
||||||
true
|
true
|
||||||
|
end
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
UI.info "Please install rb-fsevent gem for Mac OSX FSEvents support"
|
UI.info "Please install rb-fsevent gem for Mac OSX FSEvents support"
|
||||||
false
|
false
|
||||||
|
@ -24,10 +24,13 @@ module Guard
|
|||||||
|
|
||||||
def self.usable?
|
def self.usable?
|
||||||
require 'rb-inotify'
|
require 'rb-inotify'
|
||||||
if !defined?(INotify::VERSION) || Gem::Version.new(INotify::VERSION.join('.')) < Gem::Version.new('0.8.5')
|
if !defined?(INotify::VERSION) || (defined?(Gem::Version) &&
|
||||||
|
Gem::Version.new(INotify::VERSION.join('.')) < Gem::Version.new('0.8.5'))
|
||||||
UI.info "Please update rb-inotify (>= 0.8.5)"
|
UI.info "Please update rb-inotify (>= 0.8.5)"
|
||||||
end
|
false
|
||||||
|
else
|
||||||
true
|
true
|
||||||
|
end
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
UI.info "Please install rb-inotify gem for Linux inotify support"
|
UI.info "Please install rb-inotify gem for Linux inotify support"
|
||||||
false
|
false
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
module Guard
|
module Guard
|
||||||
VERSION = "0.4.0"
|
VERSION = "0.4.0" unless defined? VERSION
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
require 'guard/guard'
|
||||||
|
|
||||||
describe Guard do
|
describe Guard do
|
||||||
|
|
||||||
@ -41,35 +42,41 @@ describe Guard do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe ".get_guard_class" do
|
describe ".get_guard_class" do
|
||||||
|
after do
|
||||||
|
[:Classname, :DashedClassName, :Inline].each do |const|
|
||||||
|
Guard.send(:remove_const, const) rescue nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it "reports an error if the class is not found" do
|
it "reports an error if the class is not found" do
|
||||||
::Guard::UI.should_receive(:error)
|
::Guard::UI.should_receive(:error)
|
||||||
Guard.get_guard_class('notAGuardClass')
|
Guard.get_guard_class('notAGuardClass')
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with a nested Guard class' do
|
context 'with a nested Guard class' do
|
||||||
it "returns the Guard class when passed a Symbol" do
|
it "resolves the Guard class from string" do
|
||||||
Guard.should_receive(:try_to_load_gem) { |classname|
|
Guard.should_receive(:require) { |classname|
|
||||||
classname.should == :classname
|
classname.should == 'guard/classname'
|
||||||
class Guard::Classname
|
|
||||||
end
|
|
||||||
}
|
|
||||||
Guard.get_guard_class(:classname).should == Guard::Classname
|
|
||||||
end
|
|
||||||
|
|
||||||
it "returns the Guard class when passed a String" do
|
|
||||||
Guard.should_receive(:try_to_load_gem) { |classname|
|
|
||||||
classname.should == 'classname'
|
|
||||||
class Guard::Classname
|
class Guard::Classname
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
Guard.get_guard_class('classname').should == Guard::Classname
|
Guard.get_guard_class('classname').should == Guard::Classname
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "resolves the Guard class from symbol" do
|
||||||
|
Guard.should_receive(:require) { |classname|
|
||||||
|
classname.should == 'guard/classname'
|
||||||
|
class Guard::Classname
|
||||||
|
end
|
||||||
|
}
|
||||||
|
Guard.get_guard_class(:classname).should == Guard::Classname
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with a name with dashes' do
|
context 'with a name with dashes' do
|
||||||
it "returns the Guard class" do
|
it "returns the Guard class" do
|
||||||
Guard.should_receive(:try_to_load_gem) { |classname|
|
Guard.should_receive(:require) { |classname|
|
||||||
classname.should == 'dashed-class-name'
|
classname.should == 'guard/dashed-class-name'
|
||||||
class Guard::DashedClassName
|
class Guard::DashedClassName
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
@ -84,24 +91,12 @@ describe Guard do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Guard.should_not_receive(:require)
|
||||||
Guard.get_guard_class('inline').should == Guard::Inline
|
Guard.get_guard_class('inline').should == Guard::Inline
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe ".try_to_load_gem" do
|
|
||||||
class Guard::Classname
|
|
||||||
end
|
|
||||||
|
|
||||||
it "reports an error if the class is not found" do
|
|
||||||
Guard.get_guard_class('classname').should be_true
|
|
||||||
end
|
|
||||||
|
|
||||||
it "reports an error if the class is not found" do
|
|
||||||
Guard.get_guard_class(:classname).should be_true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe ".locate_guard" do
|
describe ".locate_guard" do
|
||||||
it "returns the path of a Guard gem" do
|
it "returns the path of a Guard gem" do
|
||||||
if Gem::Version.create(Gem::VERSION) >= Gem::Version.create('1.8.0')
|
if Gem::Version.create(Gem::VERSION) >= Gem::Version.create('1.8.0')
|
||||||
|
Loading…
Reference in New Issue
Block a user