Skip to content

Commit 49cde17

Browse files
committed
merge main
2 parents 70ba0cc + 5e55838 commit 49cde17

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+1533
-998
lines changed

.github/workflows/deploy_docs.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Build and Deploy Documentation
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths:
7+
- 'docs/**'
8+
workflow_dispatch:
9+
permissions:
10+
contents: write
11+
pages: write
12+
id-token: write
13+
14+
jobs:
15+
build:
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout code
20+
uses: actions/checkout@v4
21+
with:
22+
fetch-depth: 0
23+
24+
- name: Install uv
25+
uses: astral-sh/setup-uv@v5
26+
with:
27+
enable-cache: true
28+
29+
- name: Set up Python
30+
run: uv python install
31+
32+
- name: Install the project
33+
run: uv sync --all-extras --dev
34+
35+
- run: uv run mkdocs gh-deploy --force
36+
37+
deploy:
38+
needs: build
39+
environment:
40+
name: github-pages
41+
url: ${{ steps.deployment.outputs.page_url }}
42+
runs-on: ubuntu-latest
43+
steps:
44+
- name: Checkout
45+
uses: actions/checkout@v4
46+
with:
47+
ref: gh-pages
48+
- name: Setup Pages
49+
uses: actions/configure-pages@v5
50+
- name: Upload artifact
51+
uses: actions/upload-pages-artifact@v3
52+
with:
53+
path: '.'
54+
- name: Deploy to GitHub Pages
55+
id: deployment
56+
uses: actions/deploy-pages@v4
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Publish NPM (Manual)
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
release-tag:
7+
type: string
8+
required: true
9+
description: Release Tag to Publish
10+
11+
jobs:
12+
validate_tag:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
is-prerelease: ${{ steps.validate-release.outputs.is-prerelease }}
16+
steps:
17+
- uses: actions/github-script@v7
18+
id: validate-release
19+
with:
20+
script: |
21+
/** the "core" module does not have access to workflow_dispatch inputs */
22+
const tag = '${{ inputs.release-tag }}';
23+
24+
/** Releases don't have a guaranteed order, so we'll have to paginate */
25+
let exhausted = false;
26+
let page = 1;
27+
while (!exhausted) {
28+
const releases = await github.rest.repos.listReleases({
29+
owner: context.repo.owner,
30+
repo: context.repo.repo,
31+
page,
32+
per_page: 100,
33+
}).then(r => r.data);
34+
35+
const matchingRelease = releases.find(r => r.tag_name === tag);
36+
if (matchingRelease) {
37+
core.setOutput('has-release', 'true');
38+
core.setOutput('is-prerelease', matchingRelease.prerelease.toString());
39+
return;
40+
}
41+
42+
if (releases.length < 100) {
43+
exhausted = true;
44+
} else if (page >= 10) {
45+
throw new Error("We iterated over 10 pages. Does the script work?");
46+
} else {
47+
page++
48+
}
49+
50+
}
51+
52+
core.setOutput('has-release', 'false');
53+
core.setOutput('is-prerelease', 'false');
54+
55+
- name: Abort
56+
if: steps.validate-release.outputs.has-release != 'true'
57+
run: |
58+
{
59+
echo "Tag ${{ github.event.inputs.release_tag }} not found."
60+
exit 1
61+
}
62+
63+
publish_npm:
64+
needs: validate_tag
65+
uses: ./.github/workflows/publish.reusable.yml
66+
permissions:
67+
contents: write
68+
id-token: write
69+
with:
70+
release-tag: ${{ github.event.inputs.release-tag }}
71+
is-prerelease: ${{ needs.validate_tag.outputs.is-prerelease }}
72+
secrets: inherit
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Publish to NPM & Brew
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
release-tag:
7+
type: string
8+
required: true
9+
is-prerelease:
10+
type: string
11+
required: true
12+
default: "false"
13+
14+
jobs:
15+
publish:
16+
name: Publish All the Things
17+
runs-on: ubuntu-latest
18+
permissions:
19+
contents: write
20+
# ? what's this?! required for executing the node script?
21+
id-token: write
22+
steps:
23+
- uses: actions/checkout@v4
24+
25+
- name: Install Node
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: lts/*
29+
registry-url: "https://registry.npmjs.org"
30+
31+
- name: Generate Packages
32+
id: generate-packages
33+
run: node packages/@pglt/pglt/scripts/generate-packages.mjs
34+
env:
35+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+
RELEASE_TAG: ${{ inputs.release-tag }}
37+
PRERELEASE: ${{ inputs.is-prerelease }}
38+
39+
- name: Verify NPM TOKEN exists
40+
run: |
41+
if [ -z "${{ secrets.NPM_TOKEN }}" ]; then
42+
echo "Secret is not defined"
43+
exit 1
44+
else
45+
echo "Secret is defined"
46+
fi
47+
48+
- name: Print package.json
49+
run: |
50+
cat packages/@pglt/pglt/package.json
51+
52+
- name: Publish npm packages as nightly
53+
if: inputs.is-prerelease == 'true'
54+
run: |
55+
for package in packages/@pglt/*; do
56+
npm publish $package --tag nightly --access public --provenance
57+
done
58+
env:
59+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} #
60+
61+
- name: Publish npm packages as latest
62+
if: inputs.is-prerelease != 'true'
63+
run: |
64+
for package in packages/@pglt/*; do
65+
npm publish $package --tag latest --access public --provenance
66+
done
67+
env:
68+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Publish NPM (Automatic)
2+
3+
on:
4+
release:
5+
types: [released, prereleased]
6+
7+
jobs:
8+
publish_npm:
9+
uses: ./.github/workflows/publish.reusable.yml
10+
permissions:
11+
contents: write
12+
id-token: write
13+
with:
14+
release-tag: ${{ github.event.release.tag_name }}
15+
is-prerelease: ${{ github.event.release.prerelease }}
16+
secrets: inherit

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ jobs:
130130
fail_on_unmatched_files: true
131131
draft: true
132132

133-
- name: ✅ Output Link to Worflow Summary
133+
- name: ✅ Output Link to Workflow Summary
134134
run: |
135135
{
136136
echo "# 🚀 Release completed!"

Cargo.lock

Lines changed: 7 additions & 62 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ crossbeam = "0.8.4"
2323
enumflags2 = "0.7.10"
2424
ignore = "0.4.23"
2525
indexmap = { version = "2.6.0", features = ["serde"] }
26+
insta = "1.31.0"
2627
line_index = { path = "./lib/line_index", version = "0.0.0" }
2728
pg_query = "6.0.0"
2829
proc-macro2 = "1.0.66"

crates/pglt_base_db/Cargo.toml

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)