penchant/lib/penchant/gemfile.rb

74 lines
1.3 KiB
Ruby
Raw Normal View History

2011-08-18 17:09:49 +00:00
require 'erb'
2011-08-17 18:16:27 +00:00
module Penchant
class Gemfile
attr_reader :path
2011-08-18 17:09:49 +00:00
class << self
def do_full_env_switch!(env)
gemfile = Penchant::Gemfile.new
if !gemfile.has_gemfile_erb?
return false
end
gemfile.switch_to!(env)
end
end
def initialize(path = Dir.pwd)
2011-08-17 18:16:27 +00:00
@path = path
end
2011-08-18 16:50:14 +00:00
def gemfile_path
file_in_path('Gemfile')
end
2011-08-17 18:16:27 +00:00
def has_gemfile?
2011-08-18 16:50:14 +00:00
File.file?('Gemfile')
end
2011-08-31 18:03:48 +00:00
def has_dot_penchant?
File.file?('.penchant')
end
2011-08-18 16:50:14 +00:00
def gemfile_erb_path
file_in_path('Gemfile.erb')
2011-08-17 18:16:27 +00:00
end
def has_gemfile_erb?
2011-08-18 16:50:14 +00:00
File.file?(gemfile_erb_path)
end
def environment
File.readlines(gemfile_path).first.strip[%r{environment: (.*)}, 1]
2011-08-17 18:16:27 +00:00
end
2011-08-18 17:22:01 +00:00
def switch_to!(gemfile_env = nil)
2011-08-18 17:09:49 +00:00
@env = gemfile_env
template = File.read(gemfile_erb_path)
File.open(gemfile_path, 'wb') do |fh|
fh.puts "# generated by penchant, environment: #{@env}"
fh.print ERB.new(template).result(binding)
end
2011-08-31 18:03:48 +00:00
run_dot_penchant!(gemfile_env) if has_dot_penchant?
2011-08-18 17:09:49 +00:00
end
2011-08-17 18:16:27 +00:00
private
2011-08-18 16:50:14 +00:00
def file_in_path(file)
File.join(@path, file)
2011-08-17 18:16:27 +00:00
end
2011-08-18 17:09:49 +00:00
def env(check, &block)
instance_eval(&block) if check.to_s == @env.to_s
end
2011-08-31 18:03:48 +00:00
def run_dot_penchant!(env)
DotPenchant.run(env)
end
2011-08-17 18:16:27 +00:00
end
end