{"id":26076860,"url":"https://github.com/purescript-contrib/purescript-github-actions-toolkit","last_synced_at":"2026-03-10T15:33:09.140Z","repository":{"id":41820982,"uuid":"288346426","full_name":"purescript-contrib/purescript-github-actions-toolkit","owner":"purescript-contrib","description":"PureScript wrapper around GitHub's Actions Toolkit","archived":false,"fork":false,"pushed_at":"2024-04-02T16:48:16.000Z","size":103,"stargazers_count":25,"open_issues_count":5,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-11T22:21:29.578Z","etag":null,"topics":["github-actions","purescript"],"latest_commit_sha":null,"homepage":"","language":"PureScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/purescript-contrib.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-18T03:36:47.000Z","updated_at":"2023-07-25T14:38:25.000Z","dependencies_parsed_at":"2025-04-11T22:20:38.490Z","dependency_job_id":"40996bb9-d193-460a-b5f6-9db3b02e5526","html_url":"https://github.com/purescript-contrib/purescript-github-actions-toolkit","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/purescript-contrib/purescript-github-actions-toolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fpurescript-github-actions-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fpurescript-github-actions-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fpurescript-github-actions-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fpurescript-github-actions-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/purescript-contrib","download_url":"https://codeload.github.com/purescript-contrib/purescript-github-actions-toolkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purescript-contrib%2Fpurescript-github-actions-toolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30340117,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T15:03:31.997Z","status":"ssl_error","status_checked_at":"2026-03-10T15:01:30.431Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-actions","purescript"],"created_at":"2025-03-09T02:36:32.735Z","updated_at":"2026-03-10T15:33:09.081Z","avatar_url":"https://github.com/purescript-contrib.png","language":"PureScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Actions Toolkit\n\n[![CI](https://github.com/purescript-contrib/purescript-github-actions-toolkit/workflows/CI/badge.svg?branch=main)](https://github.com/purescript-contrib/purescript-github-actions-toolkit/actions?query=workflow%3ACI+branch%3Amain)\n[![Release](http://img.shields.io/github/release/purescript-contrib/purescript-github-actions-toolkit.svg)](https://github.com/purescript-contrib/purescript-github-actions-toolkit/releases)\n[![Pursuit](http://pursuit.purescript.org/packages/purescript-github-actions-toolkit/badge)](http://pursuit.purescript.org/packages/purescript-github-actions-toolkit)\n[![Maintainer: colinwahl](https://img.shields.io/badge/maintainer-colinwahl-teal.svg)](http://github.com/colinwahl)\n\nThis library provides PureScript bindings to Github's [Actions Toolkit](https://github.com/actions/toolkit), allowing you to automate your workflows with [Actions](https://github.com/features/actions) written in PureScript.\n\n## Installation\n\nInstall GitHub Actions Toolkit with [Spago](https://github.com/purescript/spago):\n\n```sh\nspago install github-actions-toolkit\n```\n\nYou will also need to install the npm packages for any bindings that you are using. For example, if you use functions exported from `GitHub.Actions.Core`, then you need to install the `@actions/core` npm package:\n\n```sh\nnpm install @actions/core\n```\n\n## Quick start\n\nAn Action is an `action.yml` file pair with a Node script.\n\nThis library provides PureScript bindings to [Github's Actions Toolkit](https://github.com/actions/toolkit), which provides useful tools for writing Actions.\n\nTo write your own Action, create an `action.yml` file which specifies the inputs, outputs, and metadata which will be used by your Action. See [GitHub's docs](https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions) on the syntax of this file. Then you can use this library to write a Node script which will execute the Action based on the `action.yml` file.\n\nYou can use the [Hello World PureScript Action template](https://github.com/colinwahl/hello-world-purescript-action) to get started defining your own Action. The template provides a starting point in order to define your own actions with these bindings!\n\nHere are some common functions which are used when defining Actions:\n\nGet an input with key `username` specified by the `action.yml` file for use in the script, then log it:\n\n```purescript\nmain :: Effect Unit\nmain = void $ runExceptT do\n  username \u003c- Core.getInput { name: \"username\", options: Just { required: true }}\n  liftEffect $ Core.info username\n```\n\nUse `which` to check that a tool is installed, and set the job to failed if it isn't.\n\n```purescript\nmain :: Effect Unit\nmain = do\n  result \u003c- runExceptT (IO.which { tool: \"spago\", check: true })\n  case result of\n    Left err -\u003e\n      Core.error \"spago not found\"\n      Core.setFailed \"Required tool spago is not available for this job.\"\n    Right spagoPath -\u003e\n      Core.info $ \"spago found at path \" \u003c\u003e spagoPath\n      pure unit -- If your job ends without failing, then it succeeded.\n```\n\nRun an arbitrary command with `exec`.\n\n```purescript\nmain :: Effect Unit\nmain = do\n  result \u003c- runExceptT (Exec.exec' \"spago build\")\n  case result of\n    Left err -\u003e\n      -- Something bad happened, log error and set failed\n      Core.error $ message err\n      Core.setFailed \"Exception was thrown during spago build\"\n    Right returnCode | returnCode == 0.0 -\u003e\n      Core.info \"spago build succeeded\"\n    Right returnCode -\u003e\n      Core.warning $ \"spago build failed with ruturn code\" \u003c\u003e returnCode\n      Core.setFailed \"spago exited with nonzero return code\"\n```\n\nYou can find documentation for all of the functions in this library in [the docs directory](./docs).\n\n## Documentation\n\nGitHub Actions Toolkit documentation is stored in a few places:\n\n1. Module documentation is [published on Pursuit](https://pursuit.purescript.org/packages/purescript-github-actions-toolkit).\n2. Written documentation is in [the docs directory](./docs).\n\nFor a usage example, see the [Hello World PureScript Action template](https://github.com/colinwahl/hello-world-purescript-action).  For a real-world action that uses these bindings, see [Setup PureScript](https://github.com/purescript-contrib/setup-purescript).\n\nIf you get stuck, there are several ways to get help:\n\n- [Open an issue](https://github.com/purescript-contrib/purescript-github-actions-toolkit/issues) if you have encountered a bug or problem.\n- [Search or start a thread on the PureScript Discourse](https://discourse.purescript.org) if you have general questions. You can also ask questions in the `#purescript` and `#purescript-beginners` channels on the [Functional Programming Slack](https://functionalprogramming.slack.com) ([invite link](https://fpchat-invite.herokuapp.com/)).\n\n## Contributing\n\nYou can contribute to GitHub Actions Toolkit in several ways:\n\n1. If you encounter a problem or have a question, please [open an issue](https://github.com/purescript-contrib/purescript-github-actions-toolkit/issues). We'll do our best to work with you to resolve or answer it.\n\n2. If you would like to contribute code, tests, or documentation, please [read the contributor guide](CONTRIBUTING.md). It's a short, helpful introduction to contributing to this library, including development instructions.\n\n3. If you have written a library, tutorial, guide, or other resource based on this package, please share it on the [PureScript Discourse](https://discourse.purescript.org)! Writing libraries and learning resources are a great way to help this library succeed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-contrib%2Fpurescript-github-actions-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurescript-contrib%2Fpurescript-github-actions-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurescript-contrib%2Fpurescript-github-actions-toolkit/lists"}