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