lib/raykit/git/directory.rb



module Raykit
    module Git
        # Functionality to manage a local clone of a git repository

        class Directory
            # The directory name of the local repository clone

            attr_accessor :directory

            def initialize(directory)
                @directory=directory
            end

            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
                Dir.chdir(directory) do
                    Raykit::run('git pull')
                end
            end

            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

            # 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 user_name
                `git config --get user.name`.strip
            end
    
            def user_email
                `git config --get user.email`.strip
            end
    
            def user_can_commit
                return false if(user_name.length == 0)
                return false if(user_email.length == 0)
                return true
            end

            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 remote
                Dir.chdir(directory) do
                    return Command.new('git config --get remote.origin.url').output.strip if(Dir.exist?('.git'))
                end
                ``
            end
        end
    end
end