xamplr 1.9.0 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,67 +0,0 @@
1
- module Xampl
2
- class Version
3
- @@version_limit = 5
4
-
5
- def initialize(repo_name, repo_root)
6
- @invalid = true
7
- throw :refuse_to_version unless repo_name
8
-
9
- repo_name.gsub!(/^[\.\/]*/, '')
10
- repo_name.gsub!(/\/.*/, '')
11
- throw :refuse_to_version unless repo_name
12
-
13
- @repo_root = repo_root
14
- @repo_root << '/' unless '/'[-1] == @repo_root[-1]
15
-
16
- @repo_path = "#{@repo_root}#{repo_name}"
17
- @repo_name = repo_name
18
-
19
- throw :refuse_to_version if @repo_path == @repo_root
20
- throw :refuse_to_version unless File.directory?(@repo_path)
21
-
22
- @invalid = false
23
- end
24
-
25
- def make(version_stream, description=nil)
26
- throw :refuse_to_version if @invalid
27
-
28
- existing_versions = Dir.glob("#{@repo_root}/#{@repo_name}_#{version_stream}*")
29
-
30
- if 0 == existing_versions.size then
31
- make_first_version(version_stream, existing_versions, description)
32
- else
33
- make_new_version(version_stream, existing_versions, description)
34
- end
35
- end
36
-
37
- def make_first_version(version_stream, existing_versions, description)
38
- cmd = "cd '#{@repo_root}'; rsync -a --delete '#{@repo_name}/' '#{@repo_name}_#{version_stream}.0/'"
39
- # puts "first version: #{cmd}"
40
- system(cmd)
41
- end
42
-
43
- def make_new_version(version_stream, existing_versions, description)
44
-
45
- existing_versions.reverse!
46
- cmd = []
47
- eliminate = []
48
- existing_versions.each_with_index do | version, i |
49
- pushed_name = "#{@repo_name}_#{version_stream}.#{i + 1}"
50
- cmd << "mv '#{@repo_name}_#{version_stream}.#{i}' '#{pushed_name}'"
51
- eliminate << pushed_name unless i < @@version_limit
52
- end
53
- cmd << "cd '#{@repo_root}'"
54
- cmd = cmd.reverse
55
- cmd << "rsync -a --delete --checksum --link-dest='../#{@repo_name}_#{version_stream}.1' '#{@repo_name}/' '#{@repo_name}_#{version_stream}.0/'"
56
- cmd << "touch '#{@repo_name}_#{version_stream}.0'"
57
-
58
- eliminate.each do | name |
59
- cmd << "rm -rf '#{name}'"
60
- end
61
-
62
- cmd = cmd.join("; ")
63
- # puts "new version: #{cmd}"
64
- system(cmd)
65
- end
66
- end
67
- end