dev 2.1.153 → 2.1.154

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.
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
-