1
0
mirror of https://github.com/openshift/source-to-image.git synced 2026-02-05 12:44:54 +01:00
Files
source-to-image/pkg/api/helpers.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
}