1// Copyright 2020 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package structs
5
6// CommitStatusState holds the state of a CommitStatus
7// It can be "pending", "success", "error" and "failure"
8type CommitStatusState string
9
10const (
11 // CommitStatusPending is for when the CommitStatus is Pending
12 CommitStatusPending CommitStatusState = "pending"
13 // CommitStatusSuccess is for when the CommitStatus is Success
14 CommitStatusSuccess CommitStatusState = "success"
15 // CommitStatusError is for when the CommitStatus is Error
16 CommitStatusError CommitStatusState = "error"
17 // CommitStatusFailure is for when the CommitStatus is Failure
18 CommitStatusFailure CommitStatusState = "failure"
19 // CommitStatusWarning is for when the CommitStatus is Warning
20 CommitStatusWarning CommitStatusState = "warning"
21)
22
23var commitStatusPriorities = map[CommitStatusState]int{
24 CommitStatusError: 0,
25 CommitStatusFailure: 1,
26 CommitStatusWarning: 2,
27 CommitStatusPending: 3,
28 CommitStatusSuccess: 4,
29}
30
31func (css CommitStatusState) String() string {
32 return string(css)
33}
34
35// NoBetterThan returns true if this State is no better than the given State
36// This function only handles the states defined in CommitStatusPriorities
37func (css CommitStatusState) NoBetterThan(css2 CommitStatusState) bool {
38 // NoBetterThan only handles the 5 states above
39 if _, exist := commitStatusPriorities[css]; !exist {
40 return false
41 }
42
43 if _, exist := commitStatusPriorities[css2]; !exist {
44 return false
45 }
46
47 return commitStatusPriorities[css] <= commitStatusPriorities[css2]
48}
49
50// IsPending represents if commit status state is pending
51func (css CommitStatusState) IsPending() bool {
52 return css == CommitStatusPending
53}
54
55// IsSuccess represents if commit status state is success
56func (css CommitStatusState) IsSuccess() bool {
57 return css == CommitStatusSuccess
58}
59
60// IsError represents if commit status state is error
61func (css CommitStatusState) IsError() bool {
62 return css == CommitStatusError
63}
64
65// IsFailure represents if commit status state is failure
66func (css CommitStatusState) IsFailure() bool {
67 return css == CommitStatusFailure
68}
69
70// IsWarning represents if commit status state is warning
71func (css CommitStatusState) IsWarning() bool {
72 return css == CommitStatusWarning
73}