github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/web/elm/src/Concourse/BuildStatus.elm (about)

     1  module Concourse.BuildStatus exposing
     2      ( BuildStatus(..)
     3      , decodeBuildStatus
     4      , encodeBuildStatus
     5      , isBad
     6      , isRunning
     7      , ordering
     8      , show
     9      )
    10  
    11  import Json.Decode
    12  import Json.Encode
    13  import Ordering exposing (Ordering)
    14  
    15  
    16  type BuildStatus
    17      = BuildStatusPending
    18      | BuildStatusStarted
    19      | BuildStatusSucceeded
    20      | BuildStatusFailed
    21      | BuildStatusErrored
    22      | BuildStatusAborted
    23  
    24  
    25  ordering : Ordering BuildStatus
    26  ordering =
    27      Ordering.explicit
    28          [ BuildStatusFailed
    29          , BuildStatusErrored
    30          , BuildStatusAborted
    31          , BuildStatusSucceeded
    32          , BuildStatusPending
    33          ]
    34  
    35  
    36  show : BuildStatus -> String
    37  show status =
    38      case status of
    39          BuildStatusPending ->
    40              "pending"
    41  
    42          BuildStatusStarted ->
    43              "started"
    44  
    45          BuildStatusSucceeded ->
    46              "succeeded"
    47  
    48          BuildStatusFailed ->
    49              "failed"
    50  
    51          BuildStatusErrored ->
    52              "errored"
    53  
    54          BuildStatusAborted ->
    55              "aborted"
    56  
    57  
    58  encodeBuildStatus : BuildStatus -> Json.Encode.Value
    59  encodeBuildStatus =
    60      show >> Json.Encode.string
    61  
    62  
    63  decodeBuildStatus : Json.Decode.Decoder BuildStatus
    64  decodeBuildStatus =
    65      Json.Decode.string
    66          |> Json.Decode.andThen
    67              (\status ->
    68                  case status of
    69                      "pending" ->
    70                          Json.Decode.succeed BuildStatusPending
    71  
    72                      "started" ->
    73                          Json.Decode.succeed BuildStatusStarted
    74  
    75                      "succeeded" ->
    76                          Json.Decode.succeed BuildStatusSucceeded
    77  
    78                      "failed" ->
    79                          Json.Decode.succeed BuildStatusFailed
    80  
    81                      "errored" ->
    82                          Json.Decode.succeed BuildStatusErrored
    83  
    84                      "aborted" ->
    85                          Json.Decode.succeed BuildStatusAborted
    86  
    87                      unknown ->
    88                          Json.Decode.fail <| "unknown build status: " ++ unknown
    89              )
    90  
    91  
    92  isRunning : BuildStatus -> Bool
    93  isRunning status =
    94      case status of
    95          BuildStatusPending ->
    96              True
    97  
    98          BuildStatusStarted ->
    99              True
   100  
   101          _ ->
   102              False
   103  
   104  
   105  isBad : BuildStatus -> Bool
   106  isBad status =
   107      case status of
   108          BuildStatusPending ->
   109              False
   110  
   111          BuildStatusStarted ->
   112              False
   113  
   114          BuildStatusSucceeded ->
   115              False
   116  
   117          BuildStatusFailed ->
   118              True
   119  
   120          BuildStatusErrored ->
   121              True
   122  
   123          BuildStatusAborted ->
   124              False