reseed 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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