Class: Raykit::Git::Directory
- Inherits:
-
Object
- Object
- Raykit::Git::Directory
- Defined in:
- lib/raykit/git/directory.rb
Overview
Functionality to manage a local clone of a git repository
Instance Attribute Summary collapse
-
#directory ⇒ Object
The directory name of the local repository clone.
Instance Method Summary collapse
- #branch ⇒ Object
-
#initialize(directory) ⇒ Directory
constructor
A new instance of Directory.
- #last_modified_time ⇒ Object
-
#latest_tag(branch) ⇒ Object
The latest tag for a branch of the repository.
- #outstanding_commit? ⇒ Boolean
- #pull ⇒ Object
- #rake(task) ⇒ Object
- #remote ⇒ Object
- #repository ⇒ Object
- #user_can_commit ⇒ Object
- #user_email ⇒ Object
- #user_name ⇒ Object
Constructor Details
#initialize(directory) ⇒ Directory
Returns a new instance of Directory.
9 10 11 |
# File 'lib/raykit/git/directory.rb', line 9 def initialize(directory) @directory=directory end |
Instance Attribute Details
#directory ⇒ Object
The directory name of the local repository clone
6 7 8 |
# File 'lib/raykit/git/directory.rb', line 6 def directory @directory end |
Instance Method Details
#branch ⇒ Object
85 86 87 88 89 90 91 |
# File 'lib/raykit/git/directory.rb', line 85 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 |
#last_modified_time ⇒ Object
57 58 59 60 61 |
# File 'lib/raykit/git/directory.rb', line 57 def last_modified_time Dir.chdir(@directory) do File.mtime(Dir.glob("**/*.*").select{|f| File.file?(f)}.max_by {|f| File.mtime(f)}) end end |
#latest_tag(branch) ⇒ Object
The latest tag for a branch of the repository
64 65 66 67 68 69 |
# File 'lib/raykit/git/directory.rb', line 64 def latest_tag(branch) Dir.chdir(directory) do return `git describe --abbrev=0`.strip end '' end |
#outstanding_commit? ⇒ Boolean
13 14 15 16 17 18 19 20 21 |
# File 'lib/raykit/git/directory.rb', line 13 def outstanding_commit? Dir.chdir(directory) do if(user_can_commit) return !`git status`.include?('nothing to commit,') else return false end end end |
#pull ⇒ Object
23 24 25 26 27 |
# File 'lib/raykit/git/directory.rb', line 23 def pull Dir.chdir(directory) do PROJECT.run('git pull') end end |
#rake(task) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/raykit/git/directory.rb', line 29 def rake(task) debug=false sub_dir='work' sub_dir='make' if(@directory.include?('/make/')) rake_log=repository.get_dev_dir('log') + "/#{sub_dir}.rake.#{task}.json" puts "log filename #{rake_log}" if(debug) if(File.exist?(rake_log)) if(File.mtime(rake_log) > last_modified_time) puts "using logged data" if(debug) cmd=Raykit::Command::parse(File.read(rake_log)) cmd.summary return end end Dir.chdir(@directory) do if(File.exist?('rakefile.rb')) cmd = Raykit::Command.new("rake #{task}") cmd.summary FileUtils.mkdir_p(File.dirname(rake_log)) File.open(rake_log, 'w') {|f| f.write(JSON.generate(cmd.to_hash)) } else puts 'rakefile.rb not found' end end end |
#remote ⇒ Object
100 101 102 103 104 105 106 107 108 109 |
# File 'lib/raykit/git/directory.rb', line 100 def remote if(Dir.exist?(directory)) Dir.chdir(directory) do if(Dir.exist?('.git')) return Command.new('git config --get remote.origin.url').output.strip end end end "" end |
#repository ⇒ Object
93 94 95 96 97 98 |
# File 'lib/raykit/git/directory.rb', line 93 def repository if(@repository.nil?) @repository = Raykit::Git::Repository.new(remote) end @repository end |
#user_can_commit ⇒ Object
79 80 81 82 83 |
# File 'lib/raykit/git/directory.rb', line 79 def user_can_commit return false if(user_name.length == 0) return false if(user_email.length == 0) return true end |
#user_email ⇒ Object
75 76 77 |
# File 'lib/raykit/git/directory.rb', line 75 def user_email `git config --get user.email`.strip end |
#user_name ⇒ Object
71 72 73 |
# File 'lib/raykit/git/directory.rb', line 71 def user_name `git config --get user.name`.strip end |