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