mirror of
https://github.com/openshift/source-to-image.git
synced 2026-02-05 12:44:54 +01:00
43 lines
1.5 KiB
Go
43 lines
1.5 KiB
Go
package api
|
|
|
|
import "time"
|
|
|
|
// RecordStageAndStepInfo records details about each build stage and step
|
|
func RecordStageAndStepInfo(stages []StageInfo, stageName StageName, stepName StepName, startTime time.Time, endTime time.Time) []StageInfo {
|
|
// Make sure that the stages slice is initialized
|
|
if len(stages) == 0 {
|
|
stages = make([]StageInfo, 0)
|
|
}
|
|
|
|
// If the stage already exists update the endTime and Duration, and append the new step.
|
|
for stageKey, stageVal := range stages {
|
|
if stageVal.Name == stageName {
|
|
stages[stageKey].DurationMilliseconds = endTime.Sub(stages[stageKey].StartTime).Nanoseconds() / int64(time.Millisecond)
|
|
if len(stages[stageKey].Steps) == 0 {
|
|
stages[stageKey].Steps = make([]StepInfo, 0)
|
|
}
|
|
stages[stageKey].Steps = append(stages[stageKey].Steps, StepInfo{
|
|
Name: stepName,
|
|
StartTime: startTime,
|
|
DurationMilliseconds: endTime.Sub(startTime).Nanoseconds() / int64(time.Millisecond),
|
|
})
|
|
return stages
|
|
}
|
|
}
|
|
|
|
// If the stageName does not exist, add it to the slice along with the new step.
|
|
steps := make([]StepInfo, 0)
|
|
steps = append(steps, StepInfo{
|
|
Name: stepName,
|
|
StartTime: startTime,
|
|
DurationMilliseconds: endTime.Sub(startTime).Nanoseconds() / int64(time.Millisecond),
|
|
})
|
|
stages = append(stages, StageInfo{
|
|
Name: stageName,
|
|
StartTime: startTime,
|
|
DurationMilliseconds: endTime.Sub(startTime).Nanoseconds() / int64(time.Millisecond),
|
|
Steps: steps,
|
|
})
|
|
return stages
|
|
}
|