]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - launch_here.rb
fix: TCPSocked.gethostbyname is deprecated
[user/henk/code/ruby/rbot.git] / launch_here.rb
index cf23ea788ffa501de2ff3ed5a2a03e3afa2e9f98..118f02ab5d759ee077c9083c404a61340de73690 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/ruby
+#!/usr/bin/env ruby
 #
 # Load rbot from this directory. (No need to install it with setup.rb)
 #
@@ -8,7 +8,7 @@ puts "Running from #{SCM_DIR}"
 
 $:.unshift File.join(SCM_DIR, 'lib')
 
-$version = '0.9.11-rc2'
+$version = '0.9.15'
 
 pwd = Dir.pwd
 begin
@@ -16,35 +16,35 @@ begin
 
   if File.exists? '.git'
     begin
-      git_out = `git status`
-      git_out.match(/^# On branch (.*)\n/)
-      if $1 # git 1.5.x
-        branch = $1.dup || "unknown"
-        changed = git_out.match(/^# Change(.*)\n/)
-        rev = "revision "
-        git_out = `git log -1 --pretty=format:"%h%n%b%n%ct"`.split("\n")
-        rev << git_out.first
-        $version_timestamp = git_out.last.to_i
-        rev << "(svn #{$1})" if git_out[1].match(/^git-svn-id: \S+@(\d+)/)
-        rev << ", local changes" if changed
-      else # older gits
-        git_out = `git branch`
-        git_out.match(/^\* (.*)\n/)
-        branch = $1.dup rescue "unknown"
-        rev = "revision " + `git rev-parse HEAD`[0,6]
+      git_out = `git log -1 --pretty=raw | git name-rev --annotate-stdin`.split("\n")
+      commit, branch_spec = git_out.first.scan(/^commit (\S+)(?: \((\S+)\))?$/).first
+      $version_timestamp = git_out[4].split[-2].to_i
+      subject = git_out[6].strip rescue ""
+      subject[77..-1] = "..." if subject.length > 80
+      rev = "revision #{commit[0,7]}"
+      rev << " [#{subject}]" unless subject.empty?
+      changes = `git diff-index --stat HEAD`.split("\n").last.split(", ").first rescue nil
+      rev << ", #{changes.strip}" if changes
+      if branch_spec
+        tag, branch, offset = branch_spec.scan(/^(?:(tag)s\/)?(\S+?)(?:^0)?(?:~(\d+))?$/).first
+        tag ||= "branch"
+        branch << " #{tag}"
+        branch << "-#{offset}" if offset
+      else
+        branch = "unknown branch"
       end
     rescue => e
       puts e.inspect
       branch = "unknown branch"
       rev = "unknown revision"
     end
-    $version << " (#{branch} branch, #{rev})"
-  elsif File.directory? File.join(up, '.svn')
+    $version << " (#{branch}, #{rev})"
+  elsif File.directory? File.join(SCM_DIR, '.svn')
     rev = " (unknown revision)"
     begin
       svn_out = `svn info`
       rev = " (revision #{$1}" if svn_out =~ /Last Changed Rev: (\d+)/
-      svn_st = `svn st #{up}`
+      svn_st = `svn st #{SCM_DIR}`
       rev << ", local changes" if svn_st =~ /^[MDA] /
       rev << ")"
     rescue => e