mirror of https://github.com/go-gitea/gitea.git
101 lines
2.5 KiB
Go
101 lines
2.5 KiB
Go
// Copyright 2022 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package actions
|
|
|
|
import (
|
|
"code.gitea.io/gitea/modules/translation"
|
|
|
|
runnerv1 "code.gitea.io/actions-proto-go/runner/v1"
|
|
)
|
|
|
|
// Status represents the status of ActionRun, ActionRunJob, ActionTask, or ActionTaskStep
|
|
type Status int
|
|
|
|
const (
|
|
StatusUnknown Status = iota // 0, consistent with runnerv1.Result_RESULT_UNSPECIFIED
|
|
StatusSuccess // 1, consistent with runnerv1.Result_RESULT_SUCCESS
|
|
StatusFailure // 2, consistent with runnerv1.Result_RESULT_FAILURE
|
|
StatusCancelled // 3, consistent with runnerv1.Result_RESULT_CANCELLED
|
|
StatusSkipped // 4, consistent with runnerv1.Result_RESULT_SKIPPED
|
|
StatusWaiting // 5, isn't a runnerv1.Result
|
|
StatusRunning // 6, isn't a runnerv1.Result
|
|
StatusBlocked // 7, isn't a runnerv1.Result
|
|
)
|
|
|
|
var statusNames = map[Status]string{
|
|
StatusUnknown: "unknown",
|
|
StatusWaiting: "waiting",
|
|
StatusRunning: "running",
|
|
StatusSuccess: "success",
|
|
StatusFailure: "failure",
|
|
StatusCancelled: "cancelled",
|
|
StatusSkipped: "skipped",
|
|
StatusBlocked: "blocked",
|
|
}
|
|
|
|
// String returns the string name of the Status
|
|
func (s Status) String() string {
|
|
return statusNames[s]
|
|
}
|
|
|
|
// LocaleString returns the locale string name of the Status
|
|
func (s Status) LocaleString(lang translation.Locale) string {
|
|
return lang.Tr("actions.status." + s.String())
|
|
}
|
|
|
|
// IsDone returns whether the Status is final
|
|
func (s Status) IsDone() bool {
|
|
return s.In(StatusSuccess, StatusFailure, StatusCancelled, StatusSkipped)
|
|
}
|
|
|
|
// HasRun returns whether the Status is a result of running
|
|
func (s Status) HasRun() bool {
|
|
return s.In(StatusSuccess, StatusFailure)
|
|
}
|
|
|
|
func (s Status) IsUnknown() bool {
|
|
return s == StatusUnknown
|
|
}
|
|
|
|
func (s Status) IsSuccess() bool {
|
|
return s == StatusSuccess
|
|
}
|
|
|
|
func (s Status) IsFailure() bool {
|
|
return s == StatusFailure
|
|
}
|
|
|
|
func (s Status) IsCancelled() bool {
|
|
return s == StatusCancelled
|
|
}
|
|
|
|
func (s Status) IsSkipped() bool {
|
|
return s == StatusSkipped
|
|
}
|
|
|
|
func (s Status) IsWaiting() bool {
|
|
return s == StatusWaiting
|
|
}
|
|
|
|
func (s Status) IsRunning() bool {
|
|
return s == StatusRunning
|
|
}
|
|
|
|
// In returns whether s is one of the given statuses
|
|
func (s Status) In(statuses ...Status) bool {
|
|
for _, v := range statuses {
|
|
if s == v {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (s Status) AsResult() runnerv1.Result {
|
|
if s.IsDone() {
|
|
return runnerv1.Result(s)
|
|
}
|
|
return runnerv1.Result_RESULT_UNSPECIFIED
|
|
}
|