-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEngine.rb
89 lines (72 loc) · 1.58 KB
/
Engine.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require InstallPath + 'Job.rb'
class Engine
def initialize(ui)
@ui = ui # so statement(), warning(), error() and displayHelp(), can be called
@jobs = []
@helpItems = []
end
def registerJob(job)
@jobs << job
end
def registerJobs(someJobs)
someJobs.each { | job | registerJob(job) }
end
def jobCount
@jobs.size
end
def getJob(i)
@jobs[i]
end
def runJob(i)
getJob(i).run
end
def runJobs()
begin
totalTime = 0
jobNum = 0
endPercent = 0
output = Array.new
@jobs.each do | job |
jobNum += 1
startPercent = endPercent
endPercent = 100*jobNum.to_f/@jobs.size
output = output + [job.run(self,startPercent,endPercent)]
totalTime += job.time
end
statement("Total time for all jobs: "+Job.makeTimeStr(totalTime))
percentDone(100)
output
rescue => errMsg
error(errMsg)
[]
end
end
def clearJobs
@jobs = []
end
# help: returns an array of strings
def help(items)
if items.size == 0
@ui.generalHelp
else
helpText = []
items.each do | item |
itemText = item.help(self)
helpText = helpText + [""] + itemText
end
@ui.displayHelp(helpText)
end
end
def statement(text)
@ui.statement(text)
end
def warning(text)
@ui.warning(text)
end
def error(text)
@ui.error(text)
end
def percentDone(percent)
@ui.percentDone(percent)
end
end