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.
- checksums.yaml +4 -4
- data/lib/apps/git.rb +207 -208
- data/lib/apps/msbuild.rb +90 -90
- data/lib/apps/nbench.rb +2 -1
- data/lib/apps/nuget.rb +57 -59
- data/lib/apps/svn.rb +137 -143
- data/lib/apps/wix.rb +47 -50
- data/lib/apps/xcodebuild.rb +13 -11
- data/lib/apps/zip.rb +25 -25
- data/lib/apps.rb +3 -1
- data/lib/base/array.rb +66 -64
- data/lib/base/command.rb +237 -238
- data/lib/base/dir.rb +73 -76
- data/lib/base/environment.rb +94 -99
- data/lib/base/file.rb +35 -33
- data/lib/base/gemspec.rb +47 -45
- data/lib/base/giturl.rb +88 -90
- data/lib/base/hash.rb +20 -15
- data/lib/base/history.rb +36 -33
- data/lib/base/internet.rb +22 -20
- data/lib/base/project.rb +410 -423
- data/lib/base/projects.rb +231 -246
- data/lib/base/source.rb +22 -20
- data/lib/base/string.rb +6 -4
- data/lib/base/text.rb +16 -14
- data/lib/base/timeout.rb +29 -28
- data/lib/base/timer.rb +23 -19
- data/lib/base/version.rb +68 -72
- data/lib/base.rb +5 -3
- data/lib/commands.rb +47 -43
- data/lib/dev.config.rb +3 -2
- data/lib/dev.rb +65 -66
- data/lib/tasks/add.rb +34 -40
- data/lib/tasks/analyze.rb +17 -15
- data/lib/tasks/build.rb +101 -103
- data/lib/tasks/clean.rb +6 -4
- data/lib/tasks/clobber.rb +20 -18
- data/lib/tasks/commit.rb +42 -44
- data/lib/tasks/default.rb +41 -39
- data/lib/tasks/doc.rb +10 -8
- data/lib/tasks/info.rb +8 -7
- data/lib/tasks/package.rb +23 -20
- data/lib/tasks/publish.rb +20 -25
- data/lib/tasks/pull.rb +9 -9
- data/lib/tasks/push.rb +11 -13
- data/lib/tasks/setup.rb +180 -183
- data/lib/tasks/test.rb +121 -107
- data/lib/tasks/update.rb +13 -11
- data/lib/tasks.rb +38 -42
- metadata +7 -9
- 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
|
4
|
-
require
|
5
|
-
require_relative(
|
6
|
-
require_relative(
|
7
|
-
require_relative(
|
8
|
-
require_relative(
|
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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
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
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
137
|
-
|
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
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
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
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
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
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
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
|
-
|
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
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
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
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
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
|
-
|
215
|
-
|
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
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
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
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
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
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
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
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
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
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
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
|
-
|
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
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
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
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
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
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
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
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
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
|
-
|
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
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
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
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
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
|
-
|