reseed 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,75 +10,107 @@ OpenURI::Buffer.const_set 'StringMax', 0
10
10
 
11
11
  class ReseedTask
12
12
 
13
- def execute seeds
13
+ def execute name, seeds
14
+ puts "=== #{name} ==="
15
+
14
16
  seeds.each do |s|
17
+ files_to_reseed = []
18
+
15
19
  if s[:file]
16
- reseed_file s
20
+ files_to_reseed = [s]
17
21
  elsif s[:files]
18
- reseed_files s
22
+ files = Dir.glob s.delete :files
23
+ files_to_reseed = files.map { |f| { :file => f }.merge(s) }
24
+ end
25
+
26
+ if s[:tfs]
27
+ puts "\r\nTFS checkout latest..."
28
+ tfs_checkout files
19
29
  end
20
- end
21
- end
22
30
 
23
- def reseed_file args
24
- if args[:latest_dir]
25
- reseed_from_latest_dir args[:latest_dir], args[:file], args[:tfs]
26
- elsif args[:dir]
27
- reseed_from_dir args[:dir], args[:file], args[:tfs]
28
- elsif args[:web]
29
- reseed_from_web args[:web], args[:file], args[:tfs]
31
+ puts "\r\n#{files_to_reseed.count} " + (files_to_reseed.count == 1 ? "file..." : "files...")
32
+ reseed_files files_to_reseed
30
33
  end
31
- end
32
34
 
33
- def reseed_files args
34
- files = args.delete :files
35
+ puts "\r\n"
36
+ end
35
37
 
36
- Dir.glob(files).each do |f|
37
- reseed_file({ :file => f }.merge(args))
38
+ def reseed_files files
39
+ files.each do |args|
40
+ if args[:latest_dir]
41
+ reseed_from_latest_dir args[:latest_dir], args[:file]
42
+ elsif args[:dir]
43
+ reseed_from_dir args[:dir], args[:file]
44
+ elsif args[:web]
45
+ reseed_from_web args[:web], args[:file]
46
+ end
38
47
  end
39
48
  end
40
49
 
41
- def reseed_from_latest_dir base_dir, file, checkout
50
+ def reseed_from_latest_dir base_dir, file
42
51
  source = File.join base_dir, Dir.entries(base_dir).sort.reverse.take(1).first
43
- reseed_from_dir source, file, checkout
52
+ reseed_from_dir source, file
44
53
  end
45
54
 
46
- def reseed_from_dir dir, file, checkout
55
+ def reseed_from_dir dir, file
47
56
  source = File.join(dir, File.basename(file))
48
- reseed source, file, checkout
57
+ reseed source, file
49
58
  end
50
59
 
51
- def reseed_from_web url, file, checkout
60
+ def reseed_from_web url, file
61
+ if /\.zip$/i.match url
62
+ extracted_to = download_and_extract url
63
+ reseed_from_dir extracted_to, file
64
+ return
65
+ elsif /(\\|\/)$/.match url
66
+ url += File.basename file
67
+ end
68
+
52
69
  open url do |x|
53
- reseed x.path, file, checkout
70
+ reseed x.path, file
54
71
  end
55
72
  end
56
73
 
57
- def reseed source, dest, checkout
74
+ def reseed source, dest
58
75
  base_name = File.basename dest
59
-
60
76
  if File.exist? source
61
-
62
- if checkout
63
- tfs_checkout dest
64
- end
65
-
66
77
  begin
67
78
  FileUtils.cp source, dest
68
- puts " #{base_name}"
69
79
  rescue
70
- puts " ! #{base_name} (Unable to copy)"
80
+ puts " #{base_name} (Unable to copy)"
71
81
  end
72
82
  else
73
- puts " ! #{base_name} (Doesn't exist)"
83
+ puts " #{base_name} (Doesn't exist)"
74
84
  end
85
+ end
75
86
 
87
+ def tfs_checkout paths
88
+ checked_out = 0
89
+ paths.each_slice(10) do |s|
90
+ to_checkout = s.map{ |x| "\"#{x}\"" }.join " "
91
+ `"#{TFS_PATH}" get #{to_checkout} /force /noprompt >nul 2>&1`
92
+ `"#{TFS_PATH}" checkout #{to_checkout} >nul 2>&1`
93
+ checked_out += s.count
94
+ print "\r #{checked_out} of #{paths.count}"
95
+ end
96
+ print "\r\n"
76
97
  end
77
98
 
78
- def tfs_checkout path
79
- return false unless system TFS_PATH, "get", path, " /force /noprompt"
80
- return false unless system TFS_PATH, "checkout", path
81
- return true
99
+ def download_and_extract url_to_zip
100
+ temp_dir = Dir.mktmpdir
101
+
102
+ open url_to_zip do |f|
103
+ zip_path = f.path
104
+
105
+ Zip::ZipFile.open(zip_path) do |zip|
106
+ zip.each do |z|
107
+ dest = File.join temp_dir, z.name
108
+ FileUtils.mkdir_p(File.dirname(dest))
109
+ zip.extract z, dest
110
+ end
111
+ end
112
+ end
113
+ return temp_dir
82
114
  end
83
115
 
84
116
  end
@@ -1,3 +1,3 @@
1
1
  module Reseed
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/reseed.rb CHANGED
@@ -13,7 +13,7 @@ module Reseed
13
13
  options = []
14
14
  configblock.call options
15
15
  task = ReseedTask.new
16
- task.execute options
16
+ task.execute name, options
17
17
  end
18
18
  end
19
19
  }
data/reseed.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency "rspec"
23
23
  s.add_development_dependency "mocha"
24
24
  s.add_development_dependency "fakeweb"
25
+
25
26
 
26
- # s.add_runtime_dependency "rest-client"
27
+ s.add_runtime_dependency "zip"
27
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reseed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-18 00:00:00.000000000 Z
12
+ date: 2012-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: zip
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  description: Reseeds dependencies and automatically checks out files in TFS if necessary.
63
79
  email:
64
80
  - joseph.andaverde@softekinc.com