Skip to content

Commit c34dd00

Browse files
Merge branch 'main' of https://github.com/supabase-community/postgres_lsp into refactor/revoke_parser
2 parents 019a3bc + 37ff15a commit c34dd00

File tree

62 files changed

+363
-421
lines changed

Some content is hidden

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

62 files changed

+363
-421
lines changed

.github/workflows/publish.dispatch.yml

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

.github/workflows/publish.reusable.yml

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

.github/workflows/publish.trigger.yml

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

.github/workflows/publish.yml

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
name: Publish NPM
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
release_tag:
7+
type: string
8+
required: true
9+
description: Release Tag to Publish
10+
release:
11+
types: [released, prereleased]
12+
13+
jobs:
14+
validate_tag:
15+
if: github.event_name == 'workflow_dispatch'
16+
runs-on: ubuntu-latest
17+
outputs:
18+
is-prerelease: ${{ steps.validate-release.outputs.is-prerelease }}
19+
steps:
20+
- uses: actions/github-script@v7
21+
id: validate-release
22+
with:
23+
script: |
24+
/** the "core" module does not have access to workflow_dispatch inputs */
25+
const tag = '${{ inputs.release_tag }}';
26+
27+
/** Releases don't have a guaranteed order, so we'll have to paginate */
28+
let exhausted = false;
29+
let page = 1;
30+
while (!exhausted) {
31+
const releases = await github.rest.repos.listReleases({
32+
owner: context.repo.owner,
33+
repo: context.repo.repo,
34+
page,
35+
per_page: 100,
36+
}).then(r => r.data);
37+
38+
const matchingRelease = releases.find(r => r.tag_name === tag);
39+
if (matchingRelease) {
40+
core.setOutput('has-release', 'true');
41+
core.setOutput('is-prerelease', matchingRelease.prerelease.toString());
42+
return;
43+
}
44+
45+
if (releases.length < 100) {
46+
exhausted = true;
47+
} else if (page >= 10) {
48+
throw new Error("We iterated over 10 pages. Does the script work?");
49+
} else {
50+
page++
51+
}
52+
53+
}
54+
55+
core.setOutput('has-release', 'false');
56+
core.setOutput('is-prerelease', 'false');
57+
58+
- name: Abort
59+
if: steps.validate-release.outputs.has-release != 'true'
60+
run: |
61+
{
62+
echo "Tag ${{ github.event.inputs.release_tag }} not found."
63+
exit 1
64+
}
65+
66+
publish:
67+
name: Publish All the Things
68+
needs: [validate_tag]
69+
if: |
70+
always() &&
71+
(needs.validate_tag.result == 'success' || needs.validate_tag.result == 'skipped')
72+
runs-on: ubuntu-latest
73+
permissions:
74+
contents: write
75+
id-token: write
76+
steps:
77+
- uses: actions/checkout@v4
78+
79+
- name: Install Node
80+
uses: actions/setup-node@v4
81+
with:
82+
node-version: lts/*
83+
registry-url: "https://registry.npmjs.org"
84+
85+
# Ensure npm 11.5.1 or later is installed for trusted publishing support
86+
- name: Update npm
87+
run: npm install -g npm@latest
88+
89+
- name: Verify `jq` is installed
90+
run: |
91+
if ! jq --version 2>/dev/null; then
92+
echo "jq not installed, required for extracting package names."
93+
exit 1
94+
fi
95+
96+
- name: Generate Packages (deprecated)
97+
id: generate-packages-deprecated
98+
run: node packages/@postgrestools/postgrestools/scripts/generate-packages.mjs
99+
env:
100+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
101+
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}
102+
PRERELEASE: ${{ github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease || github.event.release.prerelease }}
103+
104+
- name: Generate Packages
105+
id: generate-packages
106+
run: node packages/@postgres-language-server/cli/scripts/generate-packages.mjs
107+
env:
108+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
109+
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}
110+
PRERELEASE: ${{ github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease || github.event.release.prerelease }}
111+
112+
- name: Publish npm packages as nightly (deprecated)
113+
if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease == 'true') || (github.event_name == 'release' && github.event.release.prerelease)
114+
run: |
115+
for package in packages/@postgrestools/*; do
116+
npm publish "$package" --tag nightly --access public --provenance
117+
done
118+
119+
- name: Publish npm packages as nightly
120+
if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease == 'true') || (github.event_name == 'release' && github.event.release.prerelease)
121+
run: |
122+
for package in packages/@postgres-language-server/*; do
123+
npm publish "$package" --tag nightly --access public --provenance
124+
done
125+
126+
- name: Publish npm packages as latest (deprecated)
127+
if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease != 'true') || (github.event_name == 'release' && !github.event.release.prerelease)
128+
run: |
129+
for package in packages/@postgrestools/*; do
130+
version="${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}"
131+
npm_package_name=$(jq -r ".name" "$package/package.json")
132+
133+
if npm view "$npm_package_name@$version" version 2>/dev/null; then
134+
echo "Package $npm_package_name@$version already exists, skipping..."
135+
else
136+
echo "Publishing $npm_package_name@$version..."
137+
npm publish "$package" --tag latest --access public --provenance
138+
fi
139+
done
140+
141+
- name: Publish npm packages as latest
142+
if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease != 'true') || (github.event_name == 'release' && !github.event.release.prerelease)
143+
run: |
144+
for package in packages/@postgres-language-server/*; do
145+
version="${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}"
146+
npm_package_name=$(jq -r ".name" "$package/package.json")
147+
148+
if npm view "$npm_package_name@$version" version 2>/dev/null; then
149+
echo "Package $npm_package_name@$version already exists, skipping..."
150+
else
151+
echo "Publishing $npm_package_name@$version..."
152+
npm publish "$package" --tag latest --access public --provenance
153+
fi
154+
done

.github/workflows/pull_request.yml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,9 @@ jobs:
112112
sleep 1
113113
done
114114
115-
- name: Install tree-sitter-cli
116-
run: cargo install tree-sitter-cli
115+
- uses: tree-sitter/setup-action@v2
116+
with:
117+
install-lib: false
117118

118119
- name: Setup sqlx-cli
119120
run: cargo install sqlx-cli
@@ -170,8 +171,9 @@ jobs:
170171
- name: Setup Postgres
171172
uses: ./.github/actions/setup-postgres
172173

173-
- name: Install tree-sitter-cli
174-
run: cargo install tree-sitter-cli
174+
- uses: tree-sitter/setup-action@v2
175+
with:
176+
install-lib: false
175177

176178
- name: Run tests
177179
run: cargo test --workspace
@@ -201,8 +203,9 @@ jobs:
201203
uses: moonrepo/setup-rust@v1
202204
with:
203205
cache-base: main
204-
- name: Install tree-sitter-cli
205-
run: cargo install tree-sitter-cli
206+
- uses: tree-sitter/setup-action@v2
207+
with:
208+
install-lib: false
206209
- name: Build main binary
207210
run: cargo build -p pgt_cli --release
208211
- name: Setup Bun
@@ -244,8 +247,9 @@ jobs:
244247
cache-base: main
245248
env:
246249
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
247-
- name: Install tree-sitter-cli
248-
run: cargo install tree-sitter-cli
250+
- uses: tree-sitter/setup-action@v2
251+
with:
252+
install-lib: false
249253
- name: Ensure RustFMT on nightly toolchain
250254
run: rustup component add rustfmt --toolchain nightly
251255
- name: echo toolchain

0 commit comments

Comments
 (0)