github-actions-expressions 1.24.1

GitHub Actions expression parser and data types
Documentation
{
  "case": [
    {
      "expr": "case(true, 'first', 'default')",
      "result": { "kind": "String", "value": "first" }
    },
    {
      "expr": "case(false, 'first', 'default')",
      "result": { "kind": "String", "value": "default" }
    },
    {
      "expr": "case(true, 'first', false, 'second', 'default')",
      "result": { "kind": "String", "value": "first" }
    },
    {
      "expr": "case(false, 'first', true, 'second', 'default')",
      "result": { "kind": "String", "value": "second" }
    },
    {
      "expr": "case(false, 'first', false, 'second', 'default')",
      "result": { "kind": "String", "value": "default" }
    },
    {
      "expr": "case(1 == 1, 'equal', 'not equal')",
      "result": { "kind": "String", "value": "equal" }
    },
    {
      "expr": "case(1 == 2, 'equal', 'not equal')",
      "result": { "kind": "String", "value": "not equal" }
    },
    {
      "expr": "case(github.ref == 'refs/heads/main', 'main', github.event_name == 'pull_request', 'pr', 'other')",
      "contexts": {
        "github": {
          "ref": "refs/heads/main",
          "event_name": "push"
        }
      },
      "result": { "kind": "String", "value": "main" }
    },
    {
      "expr": "case(github.ref == 'refs/heads/main', 'main', github.event_name == 'pull_request', 'pr', 'other')",
      "contexts": {
        "github": {
          "ref": "refs/heads/develop",
          "event_name": "pull_request"
        }
      },
      "result": { "kind": "String", "value": "pr" }
    },
    {
      "expr": "case(github.ref == 'refs/heads/main', 'main', github.event_name == 'pull_request', 'pr', 'other')",
      "contexts": {
        "github": {
          "ref": "refs/heads/develop",
          "event_name": "push"
        }
      },
      "result": { "kind": "String", "value": "other" }
    },
    {
      "expr": "case(true, 123, 456)",
      "result": { "kind": "Number", "value": 123 }
    },
    {
      "expr": "case(false, 123, 456)",
      "result": { "kind": "Number", "value": 456 }
    },
    {
      "expr": "case(github.event == 'pull_request', 0, 1)",
      "contexts": {
        "github": {
          "event": "pull_request"
        }
      },
      "result": { "kind": "Number", "value": 0 }
    },
    {
      "expr": "case(false, 0, 1)",
      "result": { "kind": "Number", "value": 1 }
    },
    {
      "expr": "case(true, false, true)",
      "result": { "kind": "Boolean", "value": false }
    },
    {
      "expr": "case(false, false, true)",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "case(true, '', 'default')",
      "result": { "kind": "String", "value": "" }
    },
    {
      "expr": "case(false, 'first', '')",
      "result": { "kind": "String", "value": "" }
    },
    {
      "expr": "case(true, fromJSON('[1,2,3]'), 'default')",
      "result": { "kind": "Array", "value": [1, 2, 3] }
    },
    {
      "expr": "case(true, fromJSON('{\"key\":\"value\"}'), 'default')",
      "result": { "kind": "Object", "value": { "key": "value" } }
    },
    {
      "expr": "case(false, 'first', false, 'second', false, 'third', false, 'fourth', 'default')",
      "result": { "kind": "String", "value": "default" }
    },
    {
      "expr": "case(false, 'first', false, 'second', true, 'third', false, 'fourth', 'default')",
      "result": { "kind": "String", "value": "third" }
    },
    {
      "expr": "case('not a boolean', 'first', 'default')",
      "err": {
        "kind": "evaluation",
        "value": "case predicate must evaluate to a boolean value"
      }
    },
    {
      "expr": "case(1, 'first', 'default')",
      "err": {
        "kind": "evaluation",
        "value": "case predicate must evaluate to a boolean value"
      }
    },
    {
      "expr": "case(null, 'first', 'default')",
      "err": {
        "kind": "evaluation",
        "value": "case predicate must evaluate to a boolean value"
      }
    },
    {
      "expr": "case(fromJSON('[]'), 'first', 'default')",
      "err": {
        "kind": "evaluation",
        "value": "case predicate must evaluate to a boolean value"
      }
    },
    {
      "expr": "case(fromJSON('{}'), 'first', 'default')",
      "err": {
        "kind": "evaluation",
        "value": "case predicate must evaluate to a boolean value"
      }
    },
    {
      "expr": "case(true, 'first', false, 'second')",
      "err": {
        "kind": "parsing",
        "value": "Even number of parameters supplied, requires an odd number of parameters: 'case'. Located at position 1 within expression: case(true, 'first', false, 'second')"
      }
    }
  ]
}