github.com/franciscocpg/up@v0.1.10/platform/lambda/stack/status.go (about) 1 package stack 2 3 import ( 4 "fmt" 5 6 "github.com/apex/up/internal/colors" 7 ) 8 9 // status map for humanization. 10 var statusMap = map[Status]string{ 11 CreateInProgress: "Creating", 12 CreateFailed: "Failed to create", 13 CreateComplete: "Created", 14 15 DeleteInProgress: "Deleting", 16 DeleteFailed: "Failed to delete", 17 DeleteComplete: "Deleted", 18 DeleteSkipped: "Skipped", 19 20 UpdateInProgress: "Updating", 21 UpdateFailed: "Failed to update", 22 UpdateComplete: "Updated", 23 24 RollbackInProgress: "Rolling back", 25 RollbackFailed: "Failed to rollback", 26 RollbackComplete: "Rollback complete", 27 } 28 29 // State represents a generalized stack event state. 30 type State int 31 32 // States available. 33 const ( 34 Success State = iota 35 Pending 36 Failure 37 ) 38 39 // Status represents a stack event status. 40 type Status string 41 42 // Statuses available. 43 const ( 44 Unknown Status = "unknown" 45 46 CreateInProgress = "CREATE_IN_PROGRESS" 47 CreateFailed = "CREATE_FAILED" 48 CreateComplete = "CREATE_COMPLETE" 49 50 DeleteInProgress = "DELETE_IN_PROGRESS" 51 DeleteFailed = "DELETE_FAILED" 52 DeleteComplete = "DELETE_COMPLETE" 53 DeleteSkipped = "DELETE_SKIPPED" 54 55 UpdateInProgress = "UPDATE_IN_PROGRESS" 56 UpdateFailed = "UPDATE_FAILED" 57 UpdateComplete = "UPDATE_COMPLETE" 58 59 RollbackInProgress = "ROLLBACK_IN_PROGRESS" 60 RollbackFailed = "ROLLBACK_FAILED" 61 RollbackComplete = "ROLLBACK_COMPLETE" 62 ) 63 64 // String returns the human representation. 65 func (s Status) String() string { 66 return statusMap[s] 67 } 68 69 // IsDone returns true when failed or complete. 70 func (s Status) IsDone() bool { 71 return s.State() != Pending 72 } 73 74 // Color the given string based on the status. 75 func (s Status) Color(v string) string { 76 switch s.State() { 77 case Success: 78 return colors.Blue(v) 79 case Pending: 80 return colors.Yellow(v) 81 case Failure: 82 return colors.Red(v) 83 default: 84 return v 85 } 86 } 87 88 // State returns a generalized state. 89 func (s Status) State() State { 90 switch s { 91 case CreateFailed, UpdateFailed, DeleteFailed, RollbackFailed: 92 return Failure 93 case CreateInProgress, UpdateInProgress, DeleteInProgress, RollbackInProgress: 94 return Pending 95 case CreateComplete, UpdateComplete, DeleteComplete, DeleteSkipped, RollbackComplete: 96 return Success 97 default: 98 panic(fmt.Sprintf("unhandled state %q", s)) 99 } 100 }