class Raykit::Git::Directory

Functionality to manage a local clone of a git repository

def branch

def branch
    Dir.chdir(directory) do
        scan=`git branch`.scan(/\*\s([\w\.-]+)/)
        return scan[0][0].to_s if(!scan.nil? && scan.length > 0 && scan[0].length > 0)
    end
    'master'
end

def initialize(directory)

def initialize(directory)
    @directory=directory
end

def latest_tag(branch)

The latest tag for a branch of the repository
def latest_tag(branch)
    Dir.chdir(directory) do
        return `git describe --abbrev=0`.strip
    end
    ''
end

def outstanding_commit?

def outstanding_commit?
    Dir.chdir(directory) do
        if(user_can_commit)
            return !`git status`.include?('nothing to commit,')
        else
            return false
        end
    end
end

def pull

def pull
    Dir.chdir(directory) do
        Raykit::run('git pull')
    end
end

def rake(task)

def rake(task)
    Dir.chdir(directory) do
        if(File.exist?('rakefile.rb'))
            Raykit::run("rake #{task}")
        else
            puts 'rakefile.rb not found'
        end
    end
end

def remote

def remote
    Dir.chdir(directory) do
        return Command.new('git config --get remote.origin.url').output.strip if(Dir.exist?('.git'))
    end
    ``
end

def user_can_commit

def user_can_commit
    return false if(user_name.length == 0)
    return false if(user_email.length == 0)
    return true
end

def user_email

def user_email
    `git config --get user.email`.strip
end

def user_name

def user_name
    `git config --get user.name`.strip
end