Skip to content

Commit 9aec722

Browse files
committed
feat: add gh actions to zile new
1 parent cc5c33d commit 9aec722

7 files changed

Lines changed: 152 additions & 2 deletions

File tree

.changeset/whole-lizards-stick.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"zile": patch
3+
---
4+
5+
Added GitHub Actions to `zile new`

src/internal/cli/commands.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,18 +172,35 @@ export async function createNew(command: Command) {
172172
}
173173
cp(templatePath, targetPath)
174174

175-
// Replace "replace-me" in all files
175+
// Replace "replace-me" and package manager placeholders in all files
176176
function replace(dir: string) {
177177
const entries = fs.readdirSync(dir, { withFileTypes: true })
178178

179+
// Determine pmx (package executor) based on package manager
180+
const pmx = packageManager === 'npm' ? 'npx'
181+
: packageManager === 'pnpm' ? 'pnpx'
182+
: packageManager === 'bun' ? 'bunx'
183+
: packageManager === 'yarn' ? 'yarn dlx'
184+
: 'npx'
185+
186+
// Determine setup step based on package manager
187+
let setupStep = ''
188+
if (packageManager === 'pnpm')
189+
setupStep = `\n - name: Set up pnpm\n uses: pnpm/action-setup@v4\n`
190+
else if (packageManager === 'bun')
191+
setupStep = `\n - name: Set up Bun\n uses: oven-sh/setup-bun@v2\n`
192+
179193
for (const entry of entries) {
180194
const fullPath = path.join(dir, entry.name)
181195

182196
if (entry.isDirectory()) replace(fullPath)
183197
else
184198
try {
185199
const content = fs.readFileSync(fullPath, 'utf-8')
186-
const updated = content.replace(/replace-me/g, packageName as string)
200+
let updated = content.replace(/replace-me/g, packageName as string)
201+
updated = updated.replace(/\{pm\}/g, packageManager)
202+
updated = updated.replace(/\{pmx\}/g, pmx)
203+
updated = updated.replace(/\{setupStep\}/g, setupStep)
187204
if (content !== updated) fs.writeFileSync(fullPath, updated, 'utf-8')
188205
} catch {}
189206
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: 'Install dependencies'
2+
description: 'Prepare repository and all dependencies'
3+
4+
runs:
5+
using: 'composite'
6+
steps:{setupStep}
7+
- name: Set up Node
8+
uses: actions/setup-node@v4
9+
with:
10+
node-version: '24.5'
11+
12+
- name: Install dependencies
13+
shell: bash
14+
run: {pm} install
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Main
2+
on:
3+
push:
4+
branches: [main]
5+
6+
concurrency:
7+
group: ${{ github.workflow }}-${{ github.ref }}
8+
cancel-in-progress: true
9+
10+
jobs:
11+
verify:
12+
name: Verify
13+
uses: ./.github/workflows/verify.yml
14+
secrets: inherit
15+
16+
changesets:
17+
name: Changesets
18+
needs: verify
19+
permissions:
20+
contents: write
21+
id-token: write
22+
pull-requests: write
23+
runs-on: ubuntu-latest
24+
timeout-minutes: 5
25+
26+
steps:
27+
- name: Clone repository
28+
uses: actions/checkout@v4
29+
30+
- name: Install dependencies
31+
uses: ./.github/actions/install-dependencies
32+
33+
- name: PR or publish
34+
id: changesets
35+
uses: changesets/action@v1
36+
with:
37+
title: 'chore: version packages'
38+
commit: 'chore: version packages'
39+
publish: {pm} run changeset:publish
40+
version: {pm} run changeset:version
41+
env:
42+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Prerelease
2+
on: [push, pull_request]
3+
4+
jobs:
5+
build:
6+
runs-on: ubuntu-latest
7+
8+
steps:
9+
- name: Clone repository
10+
uses: actions/checkout@v4
11+
12+
- name: Install dependencies
13+
uses: ./.github/actions/install-dependencies
14+
15+
- name: Install dependencies
16+
run: {pm} install
17+
18+
- name: Prerelease
19+
run: |
20+
{pm} run build
21+
{pmx} pkg-pr-new publish --{pm}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Pull Request
2+
on:
3+
pull_request:
4+
types: [opened, reopened, synchronize, ready_for_review]
5+
6+
concurrency:
7+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
8+
cancel-in-progress: true
9+
10+
jobs:
11+
verify:
12+
name: Verify
13+
uses: ./.github/workflows/verify.yml
14+
secrets: inherit
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Verify
2+
on:
3+
workflow_call:
4+
workflow_dispatch:
5+
6+
jobs:
7+
checks:
8+
name: Checks
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- name: Clone repository
13+
uses: actions/checkout@v4
14+
15+
- name: Install dependencies
16+
uses: ./.github/actions/install-dependencies
17+
18+
- name: Check code
19+
run: {pm} check
20+
21+
- name: Check types
22+
run: {pm} check:types
23+
24+
test:
25+
name: Test Runtime
26+
runs-on: ubuntu-latest
27+
steps:
28+
- name: Clone repository
29+
uses: actions/checkout@v4
30+
31+
- name: Install dependencies
32+
uses: ./.github/actions/install-dependencies
33+
34+
- name: Run tests
35+
run: {pm} run test --bail=1
36+
env:
37+
CI: true

0 commit comments

Comments
 (0)