Sha256: c3e8f51785d824716c75cb53efa4a757f3426658ed5f981364e74836f388dc8c
Contents?: true
Size: 1.64 KB
Versions: 4
Compression:
Stored size: 1.64 KB
Contents
require 'date' module Rudy module SCM class SVN attr_accessor :base_uri def initialize(uri) @base_uri = uri end def create_release_tag raise "There are local changes. Please revert or check them in!" unless everything_checked_in? raise "Invalid base URI (#{@base_uri}). Check RUDY_SVN_BASE." unless valid_uri?(@base_uri) raise "You must run this command from SVN you want to release from!" unless svn_dir?(Dir.pwd) re = `svn info`.match /^URL:\s+(.+)$/ release = re[1] if re release_tag = "#{@base_uri}/#{generate_release_tag_name}" puts "Creating tag: #{release_tag}" cmd = "svn copy -m 'Another Release by Rudy!' #{release} #{release_tag}" `#{cmd} 2>&1` release_tag end def generate_release_tag_name now = Time.now mon = now.mon.to_s.rjust(2, '0') day = now.day.to_s.rjust(2, '0') rev = "r01" criteria = ['rudy', now.year, mon, day, rev] tag = criteria.join(RUDY_DELIM) # Keep incrementing the revision number until we find the next one. tag.succ! while (valid_uri?("#{@base_uri}/#{tag}")) tag end def svn_dir?(path) (File.exists?(File.join(path, '.svn'))) end def valid_uri?(uri) ret = `svn info #{uri} 2>&1` || '' # Valid SVN URIs will return some info (ret =~ /Repository UUID/) ? true : false end def everything_checked_in? `svn diff . 2>&1` == '' # svn diff should return nothing end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rudy-0.2.3 | lib/rudy/scm/svn.rb |
rudy-0.3.0 | lib/rudy/scm/svn.rb |
rudy-0.3.2 | lib/rudy/scm/svn.rb |
rudy-0.2.4 | lib/rudy/scm/svn.rb |