Class: Xampl::Version
- Inherits:
-
Object
- Object
- Xampl::Version
- Defined in:
- lib/xamplr/version.rb
Constant Summary collapse
- @@version_limit =
5
Instance Method Summary collapse
-
#initialize(repo_name, repo_root) ⇒ Version
constructor
A new instance of Version.
- #make(version_stream, description = nil) ⇒ Object
- #make_first_version(version_stream, existing_versions, description) ⇒ Object
- #make_new_version(version_stream, existing_versions, description) ⇒ Object
Constructor Details
#initialize(repo_name, repo_root) ⇒ Version
Returns a new instance of Version.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/xamplr/version.rb', line 5 def initialize(repo_name, repo_root) @invalid = true throw :refuse_to_version unless repo_name repo_name.gsub!(/^[\.\/]*/, '') repo_name.gsub!(/\/.*/, '') throw :refuse_to_version unless repo_name @repo_root = repo_root @repo_root << '/' unless '/'[-1] == @repo_root[-1] @repo_path = "#{@repo_root}#{repo_name}" @repo_name = repo_name throw :refuse_to_version if @repo_path == @repo_root throw :refuse_to_version unless File.directory?(@repo_path) @invalid = false end |
Instance Method Details
#make(version_stream, description = nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/xamplr/version.rb', line 25 def make(version_stream, description=nil) throw :refuse_to_version if @invalid existing_versions = Dir.glob("#{@repo_root}/#{@repo_name}_#{version_stream}*") if 0 == existing_versions.size then make_first_version(version_stream, existing_versions, description) else make_new_version(version_stream, existing_versions, description) end end |
#make_first_version(version_stream, existing_versions, description) ⇒ Object
37 38 39 40 41 |
# File 'lib/xamplr/version.rb', line 37 def make_first_version(version_stream, existing_versions, description) cmd = "cd '#{@repo_root}'; rsync -a --delete '#{@repo_name}/' '#{@repo_name}_#{version_stream}.0/'" # puts "first version: #{cmd}" system(cmd) end |
#make_new_version(version_stream, existing_versions, description) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/xamplr/version.rb', line 43 def make_new_version(version_stream, existing_versions, description) existing_versions.reverse! cmd = [] eliminate = [] existing_versions.each_with_index do | version, i | pushed_name = "#{@repo_name}_#{version_stream}.#{i + 1}" cmd << "mv '#{@repo_name}_#{version_stream}.#{i}' '#{pushed_name}'" eliminate << pushed_name unless i < @@version_limit end cmd << "cd '#{@repo_root}'" cmd = cmd.reverse cmd << "rsync -a --delete --checksum --link-dest='../#{@repo_name}_#{version_stream}.1' '#{@repo_name}/' '#{@repo_name}_#{version_stream}.0/'" cmd << "touch '#{@repo_name}_#{version_stream}.0'" eliminate.each do | name | cmd << "rm -rf '#{name}'" end cmd = cmd.join("; ") # puts "new version: #{cmd}" system(cmd) end |