git.iko.soy/rowtype-yoga/purescript-yoga-actions
on main help sign in
Initial commit: PureScript Yoga reusable GitHub Actions
commit2538b67e667f19eb1e1dd08f8474b6b343c715fe authorMark <mark.eibes@gmail.com> dateWed 4 Feb 2026, 20:24 (8 months ago)
4 files changed+186
.github/actions/setup/action.yml+51 .gitignore+2 LICENSE+21 README.md+112
.github/actions/setup/action.ymlnew file+51
@@ -0,0 +1,51 @@
1+name: 'Setup PureScript Yoga Stack'
2+description: 'Complete setup for PureScript Yoga packages with Node 22, PureScript, Spago, and Bun'
3+branding:
4+ icon: 'package'
5+ color: 'purple'
6+
7+inputs:
8+ purescript-version:
9+ description: 'PureScript compiler version (semver, "latest", or "unstable")'
10+ required: false
11+ default: '0.15.15'
12+ spago-version:
13+ description: 'Spago version (semver, "latest", or "unstable")'
14+ required: false
15+ default: 'unstable'
16+ node-version:
17+ description: 'Node.js version (required for Spago 1.x)'
18+ required: false
19+ default: '22'
20+ bun-version:
21+ description: 'Bun version for fast npm installs'
22+ required: false
23+ default: 'latest'
24+ install-deps:
25+ description: 'Automatically run bun install'
26+ required: false
27+ default: 'true'
28+
29+runs:
30+ using: 'composite'
31+ steps:
32+ - name: Setup Node.js
33+ uses: actions/setup-node@v4
34+ with:
35+ node-version: ${{ inputs.node-version }}
36+
37+ - name: Setup PureScript
38+ uses: purescript-contrib/setup-purescript@main
39+ with:
40+ purescript: ${{ inputs.purescript-version }}
41+ spago: ${{ inputs.spago-version }}
42+
43+ - name: Setup Bun
44+ uses: oven-sh/setup-bun@v1
45+ with:
46+ bun-version: ${{ inputs.bun-version }}
47+
48+ - name: Install dependencies
49+ if: inputs.install-deps == 'true'
50+ shell: bash
51+ run: bun install
.gitignorenew file+2
@@ -0,0 +1,2 @@
1+node_modules/
2+.DS_Store
LICENSEnew file+21
@@ -0,0 +1,21 @@
1+MIT License
2+
3+Copyright (c) 2026 Rowtype Yoga
4+
5+Permission is hereby granted, free of charge, to any person obtaining a copy
6+of this software and associated documentation files (the "Software"), to deal
7+in the Software without restriction, including without limitation the rights
8+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+copies of the Software, and to permit persons to whom the Software is
10+furnished to do so, subject to the following conditions:
11+
12+The above copyright notice and this permission notice shall be included in all
13+copies or substantial portions of the Software.
14+
15+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+SOFTWARE.
README.mdnew file+112
@@ -0,0 +1,112 @@
1+# PureScript Yoga GitHub Actions
2+
3+Reusable GitHub Actions for PureScript Yoga packages.
4+
5+## Actions
6+
7+### `setup` - Complete PureScript Yoga Stack Setup
8+
9+Sets up everything needed to build and test PureScript Yoga packages:
10+- Node.js 22+ (required for Spago 1.x)
11+- PureScript compiler
12+- Spago package manager
13+- Bun (for fast npm package management)
14+
15+#### Usage
16+
17+```yaml
18+- uses: rowtype-yoga/purescript-yoga-actions/setup@main
19+```
20+
21+#### With Custom Versions
22+
23+```yaml
24+- uses: rowtype-yoga/purescript-yoga-actions/setup@main
25+ with:
26+ purescript-version: '0.15.15'
27+ spago-version: 'unstable'
28+ node-version: '22'
29+ bun-version: 'latest'
30+ install-deps: 'true'
31+```
32+
33+#### Inputs
34+
35+| Input | Description | Default |
36+|-------|-------------|---------|
37+| `purescript-version` | PureScript compiler version | `0.15.15` |
38+| `spago-version` | Spago version (`latest`, `unstable`, or semver) | `unstable` |
39+| `node-version` | Node.js version (required for Spago 1.x) | `22` |
40+| `bun-version` | Bun version | `latest` |
41+| `install-deps` | Auto-run `bun install` | `true` |
42+
43+## Example Workflows
44+
45+### Basic Build
46+
47+```yaml
48+name: CI
49+
50+on: [push, pull_request]
51+
52+jobs:
53+ build:
54+ runs-on: ubuntu-latest
55+ steps:
56+ - uses: actions/checkout@v4
57+ - uses: rowtype-yoga/purescript-yoga-actions/setup@main
58+ - run: spago build
59+```
60+
61+### With Tests
62+
63+```yaml
64+name: CI
65+
66+on: [push, pull_request]
67+
68+jobs:
69+ test:
70+ runs-on: ubuntu-latest
71+ steps:
72+ - uses: actions/checkout@v4
73+ - uses: rowtype-yoga/purescript-yoga-actions/setup@main
74+ - run: spago build
75+ - run: spago test
76+```
77+
78+### With Redis Service
79+
80+```yaml
81+name: CI
82+
83+on: [push, pull_request]
84+
85+jobs:
86+ test:
87+ runs-on: ubuntu-latest
88+
89+ services:
90+ redis:
91+ image: redis:7-alpine
92+ ports:
93+ - 6380:6379
94+ options: >-
95+ --health-cmd "redis-cli ping"
96+ --health-interval 10s
97+ --health-timeout 5s
98+ --health-retries 5
99+
100+ steps:
101+ - uses: actions/checkout@v4
102+ - uses: rowtype-yoga/purescript-yoga-actions/setup@main
103+ - run: spago test
104+```
105+
106+## Why Node.js 22?
107+
108+Spago 1.x requires Node.js 22+ because it uses the `node:sqlite` built-in module. Even though we use Bun for package management, Spago itself runs on the Node.js runtime.
109+
110+## License
111+
112+MIT