class Razor::Rake::Git::Generate
Attributes
site_branch[RW]
template_branch[RW]
url_base[RW]
Public Class Methods
new(name='git:generate') { |self| ... }
click to toggle source
# File lib/razor/rake/git_generate.rb, line 35 def initialize(name='git:generate') @name = name @template_branch = 'master' @site_branch = 'site' @url_base = '/' yield self if block_given? define_task end
Public Instance Methods
checkout(branch) { || ... }
click to toggle source
# File lib/razor/rake/git_generate.rb, line 75 def checkout(branch) if block_given? old = current_branch begin `git checkout #{branch}` yield ensure `git checkout #{old}` end else `git checkout #{branch}` end end
current_branch()
click to toggle source
# File lib/razor/rake/git_generate.rb, line 70 def current_branch `git status` =~ /^# On branch (.+)/ return $1 end
define_task()
click to toggle source
# File lib/razor/rake/git_generate.rb, line 44 def define_task task(@name, [:message]) { |t, args| ensure_on_branch template_branch ensure_branch_is_clean # needed ? # .gitinore workaround #TODO: Solve this problem gitignore = File.read '.gitignore' rescue '' Dir.mktmpdir { |tmp| Razor.generate(generate_options, '.', tmp) checkout site_branch do sh 'git rm -r .' sh "cp -r #{tmp}/* ." # .gitignore workaround File.open('.gitignore', 'w') {|f| f << gitignore } sh 'git add .' msg = args.message if msg.nil? or msg.empty? sh 'git commit' else sh "git commit -m #{msg}" end end } } end
ensure_branch_is_clean()
click to toggle source
# File lib/razor/rake/git_generate.rb, line 97 def ensure_branch_is_clean clean = (`git status` =~ /nothing to commit \(working directory clean\)\n$/ ) clean and return raise CleanBranchError end
ensure_on_branch(branch)
click to toggle source
# File lib/razor/rake/git_generate.rb, line 89 def ensure_on_branch(branch) current_branch == branch and return ensure_branch_is_clean checkout branch rescue CleanBranchError raise BranchError.new(branch) end
generate_options()
click to toggle source
# File lib/razor/rake/git_generate.rb, line 103 def generate_options { :url_base => @url_base } end