dev 2.1.153 → 2.1.154

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/apps/git.rb +207 -208
  3. data/lib/apps/msbuild.rb +90 -90
  4. data/lib/apps/nbench.rb +2 -1
  5. data/lib/apps/nuget.rb +57 -59
  6. data/lib/apps/svn.rb +137 -143
  7. data/lib/apps/wix.rb +47 -50
  8. data/lib/apps/xcodebuild.rb +13 -11
  9. data/lib/apps/zip.rb +25 -25
  10. data/lib/apps.rb +3 -1
  11. data/lib/base/array.rb +66 -64
  12. data/lib/base/command.rb +237 -238
  13. data/lib/base/dir.rb +73 -76
  14. data/lib/base/environment.rb +94 -99
  15. data/lib/base/file.rb +35 -33
  16. data/lib/base/gemspec.rb +47 -45
  17. data/lib/base/giturl.rb +88 -90
  18. data/lib/base/hash.rb +20 -15
  19. data/lib/base/history.rb +36 -33
  20. data/lib/base/internet.rb +22 -20
  21. data/lib/base/project.rb +410 -423
  22. data/lib/base/projects.rb +231 -246
  23. data/lib/base/source.rb +22 -20
  24. data/lib/base/string.rb +6 -4
  25. data/lib/base/text.rb +16 -14
  26. data/lib/base/timeout.rb +29 -28
  27. data/lib/base/timer.rb +23 -19
  28. data/lib/base/version.rb +68 -72
  29. data/lib/base.rb +5 -3
  30. data/lib/commands.rb +47 -43
  31. data/lib/dev.config.rb +3 -2
  32. data/lib/dev.rb +65 -66
  33. data/lib/tasks/add.rb +34 -40
  34. data/lib/tasks/analyze.rb +17 -15
  35. data/lib/tasks/build.rb +101 -103
  36. data/lib/tasks/clean.rb +6 -4
  37. data/lib/tasks/clobber.rb +20 -18
  38. data/lib/tasks/commit.rb +42 -44
  39. data/lib/tasks/default.rb +41 -39
  40. data/lib/tasks/doc.rb +10 -8
  41. data/lib/tasks/info.rb +8 -7
  42. data/lib/tasks/package.rb +23 -20
  43. data/lib/tasks/publish.rb +20 -25
  44. data/lib/tasks/pull.rb +9 -9
  45. data/lib/tasks/push.rb +11 -13
  46. data/lib/tasks/setup.rb +180 -183
  47. data/lib/tasks/test.rb +121 -107
  48. data/lib/tasks/update.rb +13 -11
  49. data/lib/tasks.rb +38 -42
  50. metadata +7 -9
  51. data/bin/dev +0 -3
data/lib/base/project.rb CHANGED
@@ -1,458 +1,445 @@
1
+ # frozen_string_literal: true
2
+
1
3
  puts __FILE__ if defined?(DEBUG)
2
4
 
3
- require 'json'
4
- require 'rake'
5
- require_relative('../apps/svn.rb')
6
- require_relative('dir.rb')
7
- require_relative('environment.rb')
8
- require_relative('string.rb')
5
+ require "json"
6
+ require "rake"
7
+ require_relative("../apps/svn")
8
+ require_relative("dir")
9
+ require_relative("environment")
10
+ require_relative("string")
9
11
 
10
12
  class Project < Hash
11
- attr_accessor :filename,:env
12
-
13
- def initialize value='',fullname=''
14
- @filename=''
15
- @env=Environment.new
16
- self[:url]=Project.get_url
17
- self[:fullname]=Project.get_fullname_from_url self[:url] if self[:url].length > 0
18
- self[:timeout]=60*5
19
- if value.is_a?(String)
20
- self[:url] = value if value.is_a?(String) && value.length > 0
21
- self[:fullname] = Project.get_fullname_from_url self[:url]
22
- elsif(value.is_a?(Hash))
23
- value.each{|k,v|self[k.to_sym]=v}
24
- else
25
- self[:fullname]=Project.get_fullname_from_url self[:url] if self[:url].length > 0
26
- end
27
- self[:fullname] = fullname if fullname.length > 0
13
+ attr_accessor :filename, :env
14
+
15
+ def initialize(value = "", fullname = "")
16
+ @filename = ""
17
+ @env = Environment.new
18
+ self[:url] = Project.get_url
19
+ self[:fullname] = Project.get_fullname_from_url self[:url] if self[:url].length.positive?
20
+ self[:timeout] = 60 * 5
21
+ if value.is_a?(String)
22
+ self[:url] = value if value.is_a?(String) && value.length.positive?
23
+ self[:fullname] = Project.get_fullname_from_url self[:url]
24
+ elsif value.is_a?(Hash)
25
+ value.each { |k, v| self[k.to_sym] = v }
26
+ elsif self[:url].length.positive?
27
+ self[:fullname] = Project.get_fullname_from_url self[:url]
28
28
  end
29
-
30
- def set_timeout value
31
- self[:timeout] = value if value.is_a? Numeric
32
- self[:timeout] = value.gsub('m','').strip.to_f * 60 if value.include?('m')
33
- self[:timeout] = value.gsub('s','').strip.to_f * 60 if value.include?('s')
29
+ self[:fullname] = fullname if fullname.length.positive?
30
+ end
31
+
32
+ def set_timeout(value)
33
+ self[:timeout] = value if value.is_a? Numeric
34
+ self[:timeout] = value.gsub("m", "").strip.to_f * 60 if value.include?("m")
35
+ self[:timeout] = value.gsub("s", "").strip.to_f * 60 if value.include?("s")
36
+ end
37
+
38
+ def self.get_url(directory = Rake.application.original_dir)
39
+ url = ""
40
+ Dir.chdir(directory) do
41
+ url = `git config --get remote.origin.url`.strip if File.exist?(".git")
42
+ url = Svn.url.strip if File.exist?(".svn")
34
43
  end
35
-
36
- def self.get_url directory=Rake.application.original_dir
37
- url=''
38
- Dir.chdir(directory) do
39
- url=`git config --get remote.origin.url`.strip if(File.exists?('.git'))
40
- url= Svn.url.strip if(File.exists?('.svn'))
41
- end
42
- url
43
- end
44
-
45
- def self.get_fullname directory
46
- directory.gsub(@env.wrk_dir,'')
47
- end
48
-
49
- def self.get_fullname_from_url url
50
- return url.gsub('http://','').gsub('https://','').gsub('.com/','/').gsub('.git','')
51
- end
52
-
53
- def url; self[:url]; end
54
- def fullname; self[:fullname]; end
55
-
56
- def name
57
- parts=fullname.split('/')
58
- parts[parts.length-1]
44
+ url
45
+ end
46
+
47
+ def self.get_fullname(directory)
48
+ directory.gsub(@env.wrk_dir, "")
49
+ end
50
+
51
+ def self.get_fullname_from_url(url)
52
+ url.gsub("http://", "").gsub("https://", "").gsub(".com/", "/").gsub(".git", "")
53
+ end
54
+
55
+ def url
56
+ self[:url]
57
+ end
58
+
59
+ def fullname
60
+ self[:fullname]
61
+ end
62
+
63
+ def name
64
+ parts = fullname.split("/")
65
+ parts[parts.length - 1]
66
+ end
67
+
68
+ def wrk_dir
69
+ "#{@env.wrk_dir}/#{fullname}"
70
+ end
71
+
72
+ def make_dir(tag = "")
73
+ "#{@env.make_dir}/#{fullname}" if tag.length.zero?
74
+ "#{@env.make_dir}/#{fullname}-#{tag}"
75
+ end
76
+
77
+ def pull
78
+ if File.exist?(wrk_dir) && File.exist?("#{wrk_dir}/.git")
79
+ Dir.chdir(wrk_dir) do
80
+ puts "git pull (#{wrk_dir})"
81
+ puts `git pull`
82
+ end
59
83
  end
60
-
61
- def wrk_dir; "#{@env.wrk_dir}/#{self.fullname}"; end
62
- def make_dir tag=''
63
- "#{@env.make_dir}/#{self.fullname}" if tag.length==0
64
- "#{@env.make_dir}/#{self.fullname}-#{tag}"
84
+ end
85
+
86
+ def clone
87
+ if !File.exist?(wrk_dir) && self[:url].include?(".git")
88
+ cmd = Command.new({ input: "git clone #{self[:url]} #{wrk_dir}", quiet: true,
89
+ ignore_failure: true })
90
+ cmd.execute
91
+ @env.out cmd.summary
65
92
  end
66
-
67
- def pull
68
- if(File.exists?(wrk_dir) && File.exists?("#{wrk_dir}/.git"))
69
- Dir.chdir(wrk_dir) do
70
- puts "git pull (#{wrk_dir})"
71
- puts `git pull`
72
- end
73
- end
74
- end
75
-
76
- def clone
77
- if(!File.exists?(wrk_dir) && self[:url].include?('.git'))
78
- cmd=Command.new({ :input => "git clone #{self[:url]} #{self.wrk_dir}", :quiet => true,:ignore_failure => true})
79
- cmd.execute
80
- @env.out cmd.summary
81
- end
82
- end
83
-
84
- def checkout
85
- if(!File.exists?(wrk_dir) && self[:url].include?('svn'))
86
- cmd=Command.new({ :input => "svn checkout #{self.url} #{self.wrk_dir}", :quiet => true,:ignore_failure => true})
87
- cmd.execute
88
- @env.out cmd.summary
89
- end
90
- end
91
-
92
- def rake
93
- if(!File.exists?(self.wrk_dir))
94
- clone
95
- checkout
96
- end
97
- if(File.exists?(self.wrk_dir))
98
- Dir.chdir(self.wrk_dir) do
99
- rake = Command.new({ :input => 'rake', :timeout => 300, :ignore_failure => true })
100
- rake.execute
101
- @env.out rake.summary
102
- end
103
- end
104
- end
105
-
106
-
107
-
108
- def latest_tag update=false
109
- makedir="#{@env.make_dir}/#{self.fullname}"
110
- FileUtils.mkdir_p(File.dirname(makedir)) if !File.exists?(File.dirname(makedir))
111
- if(File.exists?(makedir))
112
- Dir.chdir(makedir) do
113
- Command.exit_code('git pull') if update
114
- end
115
- else
116
- if(update)
117
- clone=Command.new("git clone #{self.url} #{makedir}")
118
- clone[:quiet]=true
119
- clone[:ignore_failure]=true
120
- clone.execute
121
- end
122
- end
123
- if(File.exists?(makedir))
124
- Dir.chdir(makedir) do
125
- begin
126
- return Git.latest_tag
127
- rescue
128
- end
129
- end
130
- end
131
- ''
93
+ end
94
+
95
+ def checkout
96
+ if !File.exist?(wrk_dir) && self[:url].include?("svn")
97
+ cmd = Command.new({ input: "svn checkout #{url} #{wrk_dir}", quiet: true,
98
+ ignore_failure: true })
99
+ cmd.execute
100
+ @env.out cmd.summary
132
101
  end
102
+ end
133
103
 
134
-
135
-
136
- def log_filenames tags=nil
137
- tags=Array.new if tags.nil?
138
- filenames=Array.new
139
- Dir.chdir(@env.log_dir) do
140
- dotname=fullname.gsub('/','.')
141
- Dir.glob("#{dotname}*.json").each{|f|
142
- if(tags.length==0)
143
- filenames << "#{@env.log_dir}/#{f}"
144
- else
145
- has_tags=true
146
- tags.each{|tag|
147
- has_tags=false if !f.include? tag
148
- }
149
- filenames << "#{@env.log_dir}/#{f}" if has_tags
150
- end
151
- }
152
- end
153
- filenames
104
+ def rake
105
+ unless File.exist?(wrk_dir)
106
+ clone
107
+ checkout
154
108
  end
155
-
156
- def command_history tags=nil
157
- commands=Array.new
158
- log_filenames(tags).each{|logfile|
159
- begin
160
- cmd=Command.new(JSON.parse(IO.read(logfile)))
161
- commands << cmd
162
- rescue
163
- end
164
-
165
- }
166
- commands
109
+ if File.exist?(wrk_dir)
110
+ Dir.chdir(wrk_dir) do
111
+ rake = Command.new({ input: "rake", timeout: 300, ignore_failure: true })
112
+ rake.execute
113
+ @env.out rake.summary
114
+ end
167
115
  end
168
-
169
- def work_up_to_date?
170
- if wrk_dir == Rake.application.original_dir
171
- logfile=get_logfile ['up2date']
172
- if File.exists? logfile
173
- last_work_time=File.mtime(logfile)
174
- last_file_changed=Dir.get_latest_mtime Rake.application.original_dir
175
- if last_work_time > last_file_changed
176
- CLEAN.include logfile
177
- return true
178
- else
179
- puts " deleting #{logfile}" if @env.debug?
180
- File.delete(logfile)
181
- end
182
- else
183
- puts "logfile #{logfile} does NOT exist." if @env.debug?
184
- end
185
- else
186
- puts "wrk_dir does not match Rake.application.original_dir" if @env.debug?
187
- end
188
- false
116
+ end
117
+
118
+ def latest_tag(update = false)
119
+ makedir = "#{@env.make_dir}/#{fullname}"
120
+ FileUtils.mkdir_p(File.dirname(makedir)) unless File.exist?(File.dirname(makedir))
121
+ if File.exist?(makedir)
122
+ Dir.chdir(makedir) do
123
+ Command.exit_code("git pull") if update
124
+ end
125
+ elsif update
126
+ clone = Command.new("git clone #{url} #{makedir}")
127
+ clone[:quiet] = true
128
+ clone[:ignore_failure] = true
129
+ clone.execute
189
130
  end
190
-
191
- def mark_work_up_to_date
192
- if wrk_dir == Rake.application.original_dir
193
- logfile=get_logfile ['up2date']
194
- puts " writing #{logfile}" if Environment.default.debug?
195
- File.open(logfile,'w'){|f|f.write(' ')}
131
+ if File.exist?(makedir)
132
+ Dir.chdir(makedir) do
133
+ return Git.latest_tag
134
+ rescue StandardError
135
+ end
136
+ end
137
+ ""
138
+ end
139
+
140
+ def log_filenames(tags = nil)
141
+ tags = [] if tags.nil?
142
+ filenames = []
143
+ Dir.chdir(@env.log_dir) do
144
+ dotname = fullname.gsub("/", ".")
145
+ Dir.glob("#{dotname}*.json").each do |f|
146
+ if tags.length.zero?
147
+ filenames << "#{@env.log_dir}/#{f}"
196
148
  else
197
- puts "wrk_dir does not match Rake.application.original_dir" if @env.debug?
149
+ has_tags = true
150
+ tags.each do |tag|
151
+ has_tags = false unless f.include? tag
152
+ end
153
+ filenames << "#{@env.log_dir}/#{f}" if has_tags
198
154
  end
155
+ end
199
156
  end
200
-
201
- def get_logfile tags
202
- tagstring=''
203
- tagstring=tags if tags.kind_of?(String)
204
- tagstring=tags.join('.') if tags.kind_of?(Array)
205
- name="#{self.fullname}.#{tagstring}.json".gsub('/','.')
206
- "#{@env.log_dir}/#{name}"
157
+ filenames
158
+ end
159
+
160
+ def command_history(tags = nil)
161
+ commands = []
162
+ log_filenames(tags).each do |logfile|
163
+ cmd = Command.new(JSON.parse(IO.read(logfile)))
164
+ commands << cmd
165
+ rescue StandardError
207
166
  end
208
-
209
- def list
210
- history=command_history
211
- if(history.length==0)
212
- @env.out "? #{fullname}"
167
+ commands
168
+ end
169
+
170
+ def work_up_to_date?
171
+ if wrk_dir == Rake.application.original_dir
172
+ logfile = get_logfile ["up2date"]
173
+ if File.exist? logfile
174
+ last_work_time = File.mtime(logfile)
175
+ last_file_changed = Dir.get_latest_mtime Rake.application.original_dir
176
+ if last_work_time > last_file_changed
177
+ CLEAN.include logfile
178
+ return true
213
179
  else
214
- status=0
215
- history.each{|c|
216
- status=c.exit_code if c.exit_code != 0
217
- }
218
- if(status==0)
219
- @env.out " #{fullname}"
220
- else
221
- if(@env.colorize?)
222
- require 'ansi/code'
223
- @env.out ANSI.red + ANSI.bright + "X #{fullname}" + ANSI.reset
224
- else
225
- @env.out "X #{fullname}"
226
- end
227
- end
180
+ puts " deleting #{logfile}" if @env.debug?
181
+ File.delete(logfile)
228
182
  end
183
+ elsif @env.debug?
184
+ puts "logfile #{logfile} does NOT exist."
185
+ end
186
+ elsif @env.debug?
187
+ puts "wrk_dir does not match Rake.application.original_dir"
229
188
  end
230
-
231
- def out_brackets message
232
- if(@env.colorize?)
233
- require 'ansi/code'
234
- @env.out "[" + ANSI.blue + ANSI.bright + message + ANSI.reset + ']'
235
- else
236
- @env.out "[#{message}]"
237
- end
189
+ false
190
+ end
191
+
192
+ def mark_work_up_to_date
193
+ if wrk_dir == Rake.application.original_dir
194
+ logfile = get_logfile ["up2date"]
195
+ puts " writing #{logfile}" if Environment.default.debug?
196
+ File.open(logfile, "w") { |f| f.write(" ") }
197
+ elsif @env.debug?
198
+ puts "wrk_dir does not match Rake.application.original_dir"
238
199
  end
239
-
240
- def out_cyan message
241
- if(@env.colorize?)
242
- require 'ansi/code'
243
- @env.out ANSI.cyan + ANSI.bright + message + ANSI.reset
244
- else
245
- @env.out "#{message}"
246
- end
200
+ end
201
+
202
+ def get_logfile(tags)
203
+ tagstring = ""
204
+ tagstring = tags if tags.is_a?(String)
205
+ tagstring = tags.join(".") if tags.is_a?(Array)
206
+ name = "#{fullname}.#{tagstring}.json".gsub("/", ".")
207
+ "#{@env.log_dir}/#{name}"
208
+ end
209
+
210
+ def list
211
+ history = command_history
212
+ if history.length.zero?
213
+ @env.out "? #{fullname}"
214
+ else
215
+ status = 0
216
+ history.each do |c|
217
+ status = c.exit_code if c.exit_code != 0
218
+ end
219
+ if status.zero?
220
+ @env.out " #{fullname}"
221
+ elsif @env.colorize?
222
+ require "ansi/code"
223
+ @env.out ANSI.red + ANSI.bright + "X #{fullname}" + ANSI.reset
224
+ else
225
+ @env.out "X #{fullname}"
226
+ end
247
227
  end
248
-
249
- def out_property name,value
250
- if(@env.colorize?)
251
- require 'ansi/code'
252
- @env.out "#{name}: " + ANSI.white + ANSI.bold + value.to_s.strip + ANSI.reset
253
- else
254
- @env.out "#{name}: #{value}"
255
- end
228
+ end
229
+
230
+ def out_brackets(message)
231
+ if @env.colorize?
232
+ require "ansi/code"
233
+ @env.out "[#{ANSI.blue}#{ANSI.bright}#{message}#{ANSI.reset}]"
234
+ else
235
+ @env.out "[#{message}]"
256
236
  end
257
-
258
- def info
259
- infoCmd=Command.new({ :input => 'info', :exit_code => 0 })
260
- #out_cyan '========================================================='
261
- #out_cyan fullname
262
- out_property "fullname".fix(15), fullname
263
- out_property "url".fix(15), url
264
- wrk_history=command_history ['work']
265
- out_property "work status".fix(15), "?" if wrk_history.length == 0
266
- out_property "work status".fix(15), wrk_history[0].summary if wrk_history.length > 0
267
- if(wrk_history.length > 0)
268
- @env.out wrk_history[0].info
269
- end
270
- make_history=command_history ['make', latest_tag]
271
- out_property "make status".fix(15),"?" if make_history.length == 0
272
- out_property "make status".fix(15), make_history[0].summary if make_history.length > 0
273
- if(make_history.length >0)
274
- @env.out make_history[0].info
275
- end
276
- infoCmd
237
+ end
238
+
239
+ def out_cyan(message)
240
+ if @env.colorize?
241
+ require "ansi/code"
242
+ @env.out ANSI.cyan + ANSI.bright + message + ANSI.reset
243
+ else
244
+ @env.out message.to_s
277
245
  end
278
-
279
- def clobber
280
- clobberCmd=Command.new('clobber')
281
- clobberCmd[:exit_code]=0
282
- if(File.exists?(wrk_dir))
283
- Dir.remove wrk_dir,true
284
- @env.out "removed #{wrk_dir}"
285
- end
286
- if(File.exists?(make_dir))
287
- Dir.remove make_dir,true
288
- @env.out "removed #{make_dir}"
246
+ end
247
+
248
+ def out_property(name, value)
249
+ if @env.colorize?
250
+ require "ansi/code"
251
+ @env.out "#{name}: " + ANSI.white + ANSI.bold + value.to_s.strip + ANSI.reset
252
+ else
253
+ @env.out "#{name}: #{value}"
254
+ end
255
+ end
256
+
257
+ def info
258
+ infoCmd = Command.new({ input: "info", exit_code: 0 })
259
+ # out_cyan '========================================================='
260
+ # out_cyan fullname
261
+ out_property "fullname".fix(15), fullname
262
+ out_property "url".fix(15), url
263
+ wrk_history = command_history ["work"]
264
+ out_property "work status".fix(15), "?" if wrk_history.length.zero?
265
+ out_property "work status".fix(15), wrk_history[0].summary if wrk_history.length.positive?
266
+ @env.out wrk_history[0].info if wrk_history.length.positive?
267
+ make_history = command_history ["make", latest_tag]
268
+ out_property "make status".fix(15), "?" if make_history.length.zero?
269
+ out_property "make status".fix(15), make_history[0].summary if make_history.length.positive?
270
+ @env.out make_history[0].info if make_history.length.positive?
271
+ infoCmd
272
+ end
273
+
274
+ def clobber
275
+ clobberCmd = Command.new("clobber")
276
+ clobberCmd[:exit_code] = 0
277
+ if File.exist?(wrk_dir)
278
+ Dir.remove wrk_dir, true
279
+ @env.out "removed #{wrk_dir}"
280
+ end
281
+ if File.exist?(make_dir)
282
+ Dir.remove make_dir, true
283
+ @env.out "removed #{make_dir}"
284
+ end
285
+ clobberCmd
286
+ end
287
+
288
+ def work
289
+ clone
290
+ checkout
291
+ logfile = get_logfile ["work"]
292
+ if File.exist?(wrk_dir)
293
+ rake_default = Command.new({ input: "rake default", quiet: true, ignore_failure: true })
294
+ if last_work_mtime.nil? || last_work_mtime < Dir.get_latest_mtime(wrk_dir)
295
+ Dir.chdir(wrk_dir) do
296
+ @env.out fullname
297
+
298
+ if !File.exist? "rakefile.rb"
299
+ rake_default[:exit_code] = 1
300
+ rake_default[:error] = "rakefile.rb not found."
301
+ rake_default[:start_time] = Time.now
302
+ rake_default[:end_time] = Time.now
303
+ else
304
+ # rake_default[:timeout] = self[:timeout]
305
+ rake_default.execute
306
+ end
307
+ rake_default.save logfile
308
+ update_status
309
+ @env.out rake_default.summary true
310
+ return rake_default
289
311
  end
290
- clobberCmd
312
+ elsif File.exist?(logfile)
313
+ rake_default.open logfile
314
+ @env.out rake_default.summary true if rake_default[:exit_code] != 0 || @env.show_success?
315
+ end
316
+ rake_default
291
317
  end
292
-
293
- def work
294
- clone
295
- checkout
296
- logfile=get_logfile ['work']
297
- if(File.exists?(wrk_dir))
298
- rake_default=Command.new({:input =>'rake default',:quiet => true,:ignore_failure => true})
299
- if(last_work_mtime.nil? || last_work_mtime < Dir.get_latest_mtime(wrk_dir))
300
- Dir.chdir(wrk_dir) do
301
-
302
- @env.out fullname
303
-
304
- if(!File.exists?'rakefile.rb')
305
- rake_default[:exit_code]=1
306
- rake_default[:error]="rakefile.rb not found."
307
- rake_default[:start_time]=Time.now
308
- rake_default[:end_time]=Time.now
309
- else
310
- #rake_default[:timeout] = self[:timeout]
311
- rake_default.execute
312
- end
313
- rake_default.save logfile
314
- update_status
315
- @env.out rake_default.summary true
316
- return rake_default
317
- end
318
- else
319
- if(File.exists?(logfile))
320
- rake_default.open logfile
321
- @env.out rake_default.summary true if(rake_default[:exit_code] != 0 || @env.show_success?)
322
- end
323
- end
324
- rake_default
318
+ end
319
+
320
+ def make(tag = "")
321
+ tag = latest_tag true if tag.length.zero?
322
+ # return if tag.length==0
323
+ raise "no tag specified" if tag.length.zero?
324
+
325
+ rake_default = Command.new({ input: "rake default", quiet: true, ignore_failure: true })
326
+ logfile = get_logfile ["make", tag]
327
+ if File.exist?(logfile)
328
+ rake_default.open logfile
329
+ @env.out rake_default.summary true if (rake_default[:exit_code] != 0) || @env.show_success?
330
+ else
331
+ makedir = make_dir tag
332
+ FileUtils.mkdir_p(File.dirname(makedir)) unless File.exist? File.dirname(makedir)
333
+ if self[:url].include?(".git") && !File.exist?(makedir)
334
+ clone = Command.new({ input: "git clone #{self[:url]} #{makedir}", quiet: true })
335
+ clone.execute
336
+ end
337
+ if File.exist?(makedir)
338
+ Dir.chdir(makedir) do
339
+ checkout = Command.new({ input: "git checkout #{tag}", quiet: true })
340
+ checkout.execute
341
+ FileUtils.rm_r ".git"
342
+ if !File.exist? "rakefile.rb"
343
+ rake_default[:exit_code] = 1
344
+ rake_default[:error] = "rakefile.rb not found."
345
+ rake_default[:start_time] = Time.now
346
+ rake_default[:end_time] = Time.now
347
+ else
348
+ # rake_default[:timeout] = self[:timeout]
349
+ rake_default.execute
350
+ end
351
+ rake_default.save logfile
352
+ update_status
353
+ @env.out rake_default.summary true
354
+ rake_default
325
355
  end
356
+ elsif @env.debug?
357
+ puts "Project make make_dir #{makedir} does not exist."
358
+ end
359
+
360
+ begin
361
+ FileUtils.rm_r makedir
362
+ rescue StandardError
363
+ end
326
364
  end
327
-
328
- def make tag=''
329
- tag=latest_tag true if tag.length==0
330
- #return if tag.length==0
331
- raise 'no tag specified' if tag.length==0
332
-
333
- rake_default=Command.new({:input => 'rake default',:quiet => true,:ignore_failure => true})
334
- logfile=get_logfile ['make',tag]
335
- if(File.exists?(logfile))
336
- rake_default.open logfile
337
- @env.out rake_default.summary true if(rake_default[:exit_code] != 0) || @env.show_success?
338
- rake_default
339
- else
340
- makedir=make_dir tag
341
- FileUtils.mkdir_p(File.dirname(makedir)) if !File.exists? File.dirname(makedir)
342
- if(self[:url].include?('.git'))
343
- if(!File.exists?(makedir))
344
- clone=Command.new({:input=>"git clone #{self[:url]} #{makedir}",:quiet=>true})
345
- clone.execute
346
- end
347
- end
348
- if(File.exists?(makedir))
349
- Dir.chdir(makedir) do
350
- checkout=Command.new({:input=>"git checkout #{tag}",:quiet=>true})
351
- checkout.execute
352
- FileUtils.rm_r '.git'
353
- if(!File.exists?'rakefile.rb')
354
- rake_default[:exit_code]=1
355
- rake_default[:error]="rakefile.rb not found."
356
- rake_default[:start_time]=Time.now
357
- rake_default[:end_time]=Time.now
358
- else
359
- #rake_default[:timeout] = self[:timeout]
360
- rake_default.execute
361
- end
362
- rake_default.save logfile
363
- update_status
364
- @env.out rake_default.summary true
365
- rake_default
366
- end
367
- else
368
- puts "Project make make_dir #{makedir} does not exist." if @env.debug?
369
- end
370
-
371
- begin
372
- FileUtils.rm_r makedir
373
- rescue
374
- end
375
- rake_default
376
- end
377
- end
378
-
379
- def last_work_mtime
380
- logfile=get_logfile ['work']
381
- return File.mtime(logfile) if File.exists? logfile
382
- nil
365
+ rake_default
366
+ end
367
+
368
+ def last_work_mtime
369
+ logfile = get_logfile ["work"]
370
+ return File.mtime(logfile) if File.exist? logfile
371
+
372
+ nil
373
+ end
374
+
375
+ def update_status
376
+ status_logfile = "#{@env.root_dir}/log/#{fullname}/#{@env.user}@#{@env.machine}.status.json"
377
+ status = Hash.new({ "status" => "?" })
378
+ wrk_logfile = "#{@env.root_dir}/log/#{fullname}/#{@env.user}@#{@env.machine}.json"
379
+ if File.exist?(wrk_logfile)
380
+ rake_default = Command.new(JSON.parse(IO.read(wrk_logfile)))
381
+ status[:work_logfile] = wrk_logfile
382
+ status["status"] = "0"
383
+ status["status"] = "X" if rake_default[:exit_code] != 0
383
384
  end
384
-
385
- def update_status
386
- status_logfile="#{@env.root_dir}/log/#{self.fullname}/#{@env.user}@#{@env.machine}.status.json"
387
- status=Hash.new({'status'=>'?'})
388
- wrk_logfile="#{@env.root_dir}/log/#{self.fullname}/#{@env.user}@#{@env.machine}.json"
389
- if(File.exists?(wrk_logfile))
390
- rake_default=Command.new(JSON.parse(IO.read(wrk_logfile)))
391
- status[:work_logfile]=wrk_logfile
392
- status['status']='0'
393
- status['status']='X' if rake_default[:exit_code] != 0
394
- end
395
- make_logfile="#{@env.root_dir}/log/#{self.fullname}/#{latest_tag}/#{@env.user}@#{@env.machine}.json"
396
- if(File.exists?(make_logfile))
397
- rake_default=Command.new(JSON.parse(IO.read(make_logfile)))
398
- status[:make_logfile]=make_logfile
399
- status['status']='0'
400
- status['status']='X' if rake_default[:exit_code] != 0
401
- else
402
- status['status']='?'
403
- end
404
- FileUtils.mkdir_p(File.dirname(status_logfile)) if !File.exists?(File.dirname(status_logfile))
405
- File.open(status_logfile,'w'){|f|f.write(status.to_json)}
385
+ make_logfile = "#{@env.root_dir}/log/#{fullname}/#{latest_tag}/#{@env.user}@#{@env.machine}.json"
386
+ if File.exist?(make_logfile)
387
+ rake_default = Command.new(JSON.parse(IO.read(make_logfile)))
388
+ status[:make_logfile] = make_logfile
389
+ status["status"] = "0"
390
+ status["status"] = "X" if rake_default[:exit_code] != 0
391
+ else
392
+ status["status"] = "?"
406
393
  end
407
-
408
- def status
409
- status_logfile="#{@env.root_dir}/log/#{self.fullname}/#{@env.user}@#{@env.machine}.status.json"
410
- update_status if !File.exists? status_logfile
411
- if(File.exists?(status_logfile))
412
- statusHash=JSON.parse(IO.read(status_logfile))
413
- return statusHash['status'] if(statusHash.has_key?('status'))
414
- end
415
- '?'
394
+ FileUtils.mkdir_p(File.dirname(status_logfile)) unless File.exist?(File.dirname(status_logfile))
395
+ File.open(status_logfile, "w") { |f| f.write(status.to_json) }
396
+ end
397
+
398
+ def status
399
+ status_logfile = "#{@env.root_dir}/log/#{fullname}/#{@env.user}@#{@env.machine}.status.json"
400
+ update_status unless File.exist? status_logfile
401
+ if File.exist?(status_logfile)
402
+ statusHash = JSON.parse(IO.read(status_logfile))
403
+ return statusHash["status"] if statusHash.key?("status")
416
404
  end
417
-
418
- def report
405
+ "?"
406
+ end
407
+
408
+ def report; end
409
+
410
+ def update
411
+ clone
412
+ checkout
413
+ if File.exist?(wrk_dir)
414
+ Dir.chdir(wrk_dir) do
415
+ if File.exist?(".git")
416
+ pull = Command.execute(Command.new({ input: "git pull", quiet: true, ignore_failure: true }))
417
+ @env.out pull.summary true
418
+ return pull
419
+ end
420
+ if File.exist?(".svn")
421
+ updateCmd = Command.execute(Command.new({ input: "svn update", quiet: true,
422
+ ignore_failure: true }))
423
+ @env.out updateCmd.summary true
424
+ return updateCmd
425
+ end
426
+ end
419
427
  end
420
-
421
- def update
422
- clone
423
- checkout
424
- if(File.exists?(wrk_dir))
425
- Dir.chdir(wrk_dir) do
426
- if(File.exists?('.git'))
427
- pull=Command.execute(Command.new({:input => 'git pull', :quiet => true, :ignore_failure => true}))
428
- @env.out pull.summary true
429
- return pull
430
- end
431
- if(File.exists?('.svn'))
432
- updateCmd=Command.execute(Command.new({:input => 'svn update', :quiet => true, :ignore_failure => true}))
433
- @env.out updateCmd.summary true
434
- return updateCmd
435
- end
436
- end
437
- end
438
- return Command.new({:exit_code => 1})
428
+ Command.new({ exit_code: 1 })
429
+ end
430
+
431
+ def tags
432
+ tags = []
433
+ unless File.exist? wrk_dir
434
+ clone = Command.new({ input: "git clone #{self[:url]} #{wrk_dir}", quiet: true })
435
+ clone.execute
439
436
  end
440
-
441
- def tags
442
- tags=Array.new
443
- if !File.exists? wrk_dir
444
- clone=Command.new({:input=>'git clone #{self[:url]} #{wrk_dir}',:quiet=>true})
445
- clone.execute
446
- end
447
- Dir.chdir(wrk_dir) do
448
- Command.output('git tag').split('\n').each{|line|
449
- tag=line.strip
450
- tags << tag if tag.length < 0
451
- }
452
- end
453
- tags
437
+ Dir.chdir(wrk_dir) do
438
+ Command.output("git tag").split('\n').each do |line|
439
+ tag = line.strip
440
+ tags << tag if tag.length.negative?
441
+ end
454
442
  end
455
-
456
-
443
+ tags
444
+ end
457
445
  end
458
-