start work on dotfile hook suttport

This commit is contained in:
John Bintz 2011-08-31 14:03:48 -04:00
parent 508597a9be
commit c4407f1690
5 changed files with 63 additions and 0 deletions

View File

@ -1,3 +1,4 @@
module Penchant module Penchant
autoload :Gemfile, 'penchant/gemfile' autoload :Gemfile, 'penchant/gemfile'
autoload :DotPenchant, 'penchant/dot_penchant'
end end

View File

@ -0,0 +1,16 @@
module Penchant
class DotPenchant
class << self
def run(env = nil)
dot_penchant = new
dot_penchant.run(env)
dot_penchant
end
end
def run(env = nil)
instance_eval(File.read('.penchant'))
end
end
end

View File

@ -27,6 +27,10 @@ module Penchant
File.file?('Gemfile') File.file?('Gemfile')
end end
def has_dot_penchant?
File.file?('.penchant')
end
def gemfile_erb_path def gemfile_erb_path
file_in_path('Gemfile.erb') file_in_path('Gemfile.erb')
end end
@ -48,6 +52,8 @@ module Penchant
fh.print ERB.new(template).result(binding) fh.print ERB.new(template).result(binding)
end end
run_dot_penchant!(gemfile_env) if has_dot_penchant?
end end
private private
@ -58,6 +64,10 @@ module Penchant
def env(check, &block) def env(check, &block)
instance_eval(&block) if check.to_s == @env.to_s instance_eval(&block) if check.to_s == @env.to_s
end end
def run_dot_penchant!(env)
DotPenchant.run(env)
end
end end
end end

View File

@ -0,0 +1,20 @@
require 'spec_helper'
describe Penchant::DotPenchant do
include FakeFS::SpecHelpers
describe '.run' do
before do
File.open('.penchant', 'wb') { |fh|
fh.puts "@did_run = env"
}
end
it 'should run the file in the environment' do
dot_file = Penchant::DotPenchant.run(:this)
dot_file.instance_variable_get(:@did_run).should == :this
end
end
end

View File

@ -103,6 +103,22 @@ ERB
File.read('Gemfile').should_not include('not') File.read('Gemfile').should_not include('not')
File.read('Gemfile').should include('all') File.read('Gemfile').should include('all')
end end
it { should_not have_dot_penchant }
context 'with .penchant' do
before do
File.open('.penchant', 'wb')
end
it { should have_dot_penchant }
it 'should process the file' do
subject.expects(:run_dot_penchant!).with(:not)
subject.switch_to!(:not)
end
end
end end
end end
end end