env: status page
Updates page asynchronously every 5 seconds.
Introduces beforeStart and afterStart trigger points to update setup status information.
Change-Id: Ic2f6a9bb7a0fefeefc4d6a1a7338d506a4f99e80
diff --git a/core/installer/tasks/tasks.go b/core/installer/tasks/tasks.go
index 6d0ec01..c097af3 100644
--- a/core/installer/tasks/tasks.go
+++ b/core/installer/tasks/tasks.go
@@ -21,10 +21,12 @@
}
type basicTask struct {
- title string
- status Status
- err error
- listeners []TaskDoneListener
+ title string
+ status Status
+ err error
+ listeners []TaskDoneListener
+ beforeStart func()
+ afterDone func()
}
func newBasicTask(title string) basicTask {
@@ -81,7 +83,15 @@
}
func (b *leafTask) Start() {
- b.callDoneListeners(b.start())
+ b.status = StatusRunning
+ if b.beforeStart != nil {
+ b.beforeStart()
+ }
+ err := b.start()
+ defer b.callDoneListeners(err)
+ if b.afterDone != nil {
+ b.afterDone()
+ }
}
type parentTask struct {