class Raykit::Project
Attributes
name[RW]
target[RW]
timer[RW]
verbose[RW]
Public Class Methods
new()
click to toggle source
@log @commit_message_filename
# File lib/raykit/project.rb, line 18 def initialize() @verbose=false @timer=Raykit::Timer.new @remote='' @commit_message_filename="commit_message.tmp" if(Dir.exist?(RAKE_DIRECTORY)) @directory=RAKE_DIRECTORY if(Dir.exist?("#{RAKE_DIRECTORY}/.git") && Dir.exist?(@directory)) @git_directory=Raykit::Git::Directory.new(@directory) @remote=@git_directory.remote end else @directory='' end #@log=Log.new("#{RAKE_DIRECTORY}/tmp/raykit.log") if(defined?(NAME)) @name=NAME else slns = Dir.glob("*.sln") if(slns.length == 1) @name=slns[0].gsub('.sln','') else gemspecs= Dir.glob('*.gemspec') if(gemspecs.length == 1) @name=gemspecs[0].gsub('.gemspec','') else remote_parts = @remote.split('/') if(remote_parts.length > 0) @name=remote_parts[-1].gsub('.git','') end end end end @repository=Raykit::Git::Repository.new(@remote) end
Public Instance Methods
branch()
click to toggle source
# File lib/raykit/project.rb, line 77 def branch @git_directory.branch end
commit(commit_message)
click to toggle source
# File lib/raykit/project.rb, line 221 def commit(commit_message) warn "[DEPRECATION] 'commit_message_filename' is deprectated. Use a run command for better transparency." Dir.chdir(@directory) do if(File.exist?('.gitignore')) status=`git status` if(status.include?('Changes not staged for commit:')) run("git add --all") if(GIT_DIRECTORY.outstanding_commit?) if(File.exist?(@commit_message_filename)) run("git commit --file #{@commit_message_filename}") File.delete(@commit_message_filename) else run("git commit -m'#{commit_message}'") end end end else puts "warning: .gitignore not found." end end self end
commit_message_filename()
click to toggle source
# File lib/raykit/project.rb, line 216 def commit_message_filename warn "[DEPRECATION] 'commit_message_filename' is deprectated." @commit_message_filename end
directory()
click to toggle source
# File lib/raykit/project.rb, line 74 def directory @directory end
elapsed()
click to toggle source
# File lib/raykit/project.rb, line 178 def elapsed elapsed=@timer.elapsed if(elapsed < 1.0) "%.1f" % (@timer.elapsed) + "s" else "%.0f" % (@timer.elapsed) + "s" end end
get_dev_dir(subdir)
click to toggle source
# File lib/raykit/project.rb, line 56 def get_dev_dir(subdir) Raykit::Environment::get_dev_dir(subdir) end
has_diff?(filename)
click to toggle source
# File lib/raykit/project.rb, line 104 def has_diff?(filename) Dir.chdir(@directory) do text=`git diff #{filename}`.strip return true if(text.length > 0) end end
info()
click to toggle source
# File lib/raykit/project.rb, line 187 def info ljust=35 puts '' puts "PROJECT.name".ljust(ljust) + Rainbow(PROJECT.name).yellow.bright puts "PROJECT.version".ljust(ljust) + Rainbow(PROJECT.version).yellow.bright puts "PROJECT.remote".ljust(ljust) + Rainbow(PROJECT.remote).yellow.bright puts "PROJECT.branch".ljust(ljust) + Rainbow(PROJECT.branch).yellow.bright #puts "PROJECT.target".ljust(ljust) + Rainbow(PROJECT.target).yellow.bright #puts "PROJECT.target_md5".ljust(ljust) + Rainbow(PROJECT.target_md5).yellow.bright puts "PROJECT.latest_tag".ljust(ljust) + Rainbow(PROJECT.latest_tag).yellow.bright puts "PROJECT.latest_tag_commit".ljust(ljust) + Rainbow(PROJECT.latest_tag_commit).yellow.bright puts "PROJECT.latest_tag_md5".ljust(ljust) + Rainbow(PROJECT.latest_tag_md5).yellow.bright puts "PROJECT.latest_commit".ljust(ljust) + Rainbow(PROJECT.latest_commit).yellow.bright puts "PROJECT.last_modified_filename".ljust(ljust) + Rainbow(PROJECT.last_modified_filename).yellow.bright #puts "PROJECT.elapsed".ljust(ljust) + Rainbow(PROJECT.elapsed).yellow.bright puts "PROJECT.size".ljust(ljust) + Rainbow(PROJECT.size).yellow.bright puts "PROJECT.size_pack".ljust(ljust) + Rainbow(PROJECT.size_pack).yellow.bright puts "PROJECT.outstanding_commit?".ljust(ljust) + Rainbow(PROJECT.outstanding_commit?).yellow.bright puts "PROJECT.outstanding_tag?".ljust(ljust) + Rainbow(PROJECT.outstanding_tag?).yellow.bright puts '' self end
last_modified_filename()
click to toggle source
# File lib/raykit/project.rb, line 150 def last_modified_filename Dir.chdir(@directory) do Dir.glob("**/*.*").select{|f| File.file?(f)}.max_by {|f| File.mtime(f)} end end
latest_commit()
click to toggle source
latest local commit
# File lib/raykit/project.rb, line 82 def latest_commit Dir.chdir(@directory) do text=`git log -n 1` scan=text.scan(/commit ([\w]+)\s/) return scan[0][0].to_s end end
latest_tag()
click to toggle source
def update_version
@version=Raykit::Version.detect(@name,@verbose)
end
# File lib/raykit/project.rb, line 129 def latest_tag `git describe --abbrev=0`.strip end
latest_tag_commit()
click to toggle source
# File lib/raykit/project.rb, line 133 def latest_tag_commit `git show-ref -s #{latest_tag}`.strip end
latest_tag_md5()
click to toggle source
# File lib/raykit/project.rb, line 137 def latest_tag_md5 text=`git tag #{latest_tag} -n3` scan = text.scan(/md5=(\w{32})/) if(scan.length > 0 && scan[0].length > 0) return scan[0][0].to_s.strip end '' end
log()
click to toggle source
# File lib/raykit/project.rb, line 60 def log @log end
outstanding_commit?()
click to toggle source
# File lib/raykit/project.rb, line 90 def outstanding_commit? Dir.chdir(@directory) do return true if(!`git status`.include?('nothing to commit')) end false end
outstanding_tag?()
click to toggle source
# File lib/raykit/project.rb, line 97 def outstanding_tag? #puts `git log -n 1` #!latest_tag_commit.eql?(latest_commit) #commit 2e4cb6d6c0721e16cd06afee85b7cdc27354921b (HEAD -> master, tag: 0.0.180, origin/master, origin/HEAD) outstanding_commit? || !`git log -n 1`.include?('tag:') end
pull()
click to toggle source
# File lib/raykit/project.rb, line 256 def pull Dir.chdir(@directory) do run('git pull') end self end
push()
click to toggle source
# File lib/raykit/project.rb, line 244 def push Dir.chdir(@directory) do status=`git status` if(status.include?('use "git push"')) run('git push') #run('git push --tags') end end self end
remote()
click to toggle source
# File lib/raykit/project.rb, line 146 def remote @remote end
run(command,quit_on_failure=true)
click to toggle source
# File lib/raykit/project.rb, line 285 def run(command,quit_on_failure=true) #log.update_command_time(command,DateTime.now) if(command.kind_of?(Array)) command.each{|subcommand| run(subcommand,quit_on_failure)} else cmd = Command.new(command) cmd.summary cmd.save elapsed_str = Timer.get_elapsed_str(cmd.elapsed,0) if(cmd.exitstatus == 0) #puts elapsed_str + " " + Rainbow(cmd.command).yellow.bright #return elapsed_str + " " + cmd.command else # display error details puts cmd.output puts cmd.error puts if(quit_on_failure) abort Rainbow(elapsed_str).red.bright + " " + Rainbow(cmd.command).white end end cmd end end
size()
click to toggle source
# File lib/raykit/project.rb, line 156 def size Dir.chdir(@directory) do text =`git count-objects -v -H` if matches = text.match(/size: ([. \w]+)$/) matches[1] else text end end end
size_pack()
click to toggle source
# File lib/raykit/project.rb, line 167 def size_pack Dir.chdir(@directory) do text =`git count-objects -v -H` if matches = text.match(/size-pack: ([. \w]+)$/) matches[1] else text end end end
summary()
click to toggle source
# File lib/raykit/project.rb, line 210 def summary info if(@verbose) puts "[" + elapsed + "] " + Rainbow(@name).yellow.bright + " " + Rainbow(version).yellow.bright end
tag()
click to toggle source
# File lib/raykit/project.rb, line 263 def tag warn "[DEPRECATION] 'tag' is deprecated. Use run command(s) for better transparency." Dir.chdir(@directory) do specific_tag=`git tag -l #{@version}`.strip puts Rainbow("git tag - #{@version}").green if(@verbose) puts `git tag -l #{@version}` if(@verbose) if(specific_tag.length == 0) puts "tag #{@version} not detected." if(@verbose) tag = `git describe --abbrev=0 --tags`.strip if(@version != tag) puts "latest tag #{@tag}" if(@verbose) run("git tag #{@version} -m'#{@version}'") run("git push origin #{@version}") #push end else puts "already has tag #{specific_tag}" if(@verbose) end end self end
target_md5()
click to toggle source
def target
@target
end
# File lib/raykit/project.rb, line 67 def target_md5 if(!target.nil? && File.exist?(target)) return Digest::MD5.file(target).to_s.strip end '' end
version()
click to toggle source
# File lib/raykit/project.rb, line 111 def version if(@version.nil?) #Dir.chdir(@directory) do # if(Dir.glob("*.gemspec").length > 0) # @version=`bump current`.gsub('Current version:','').strip # else # @version=Raykit::VersionHelper.detect(@name,@verbose) # end @version=Raykit::Version.detect(@name,@verbose) #end end @version end