Skip to content

Commit c7d27e6

Browse files
committed
Merge branch 'main' into feat/pretty-print-try-2
# Conflicts: # Cargo.lock # Cargo.toml
2 parents bfa0e2c + 376654e commit c7d27e6

File tree

1,715 files changed

+732789
-6820
lines changed

Some content is hidden

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

1,715 files changed

+732789
-6820
lines changed

.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
SQLX_OFFLINE=true
12
DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5432/postgres

.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Ensure consistent line endings for SQL files across all platforms
2+
# This is required for sqlx offline mode to generate consistent query hashes
3+
# see https://github.com/launchbadge/sqlx/issues/1494
4+
*.sql text eol=lf

.github/workflows/publish.dispatch.yml

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

.github/workflows/publish.reusable.yml

Lines changed: 0 additions & 68 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: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ on:
1212
- "Cargo.lock"
1313
- "rust-toolchain.toml"
1414
- "rustfmt.toml"
15+
- ".env"
1516
# or in js packages
1617
- "packages/**"
1718
# or in workflows
@@ -112,8 +113,9 @@ jobs:
112113
sleep 1
113114
done
114115
115-
- name: Install tree-sitter-cli
116-
run: cargo install tree-sitter-cli
116+
- uses: tree-sitter/setup-action@v2
117+
with:
118+
install-lib: false
117119

118120
- name: Setup sqlx-cli
119121
run: cargo install sqlx-cli
@@ -170,8 +172,9 @@ jobs:
170172
- name: Setup Postgres
171173
uses: ./.github/actions/setup-postgres
172174

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

176179
- name: Run tests
177180
run: cargo test --workspace
@@ -201,10 +204,11 @@ jobs:
201204
uses: moonrepo/setup-rust@v1
202205
with:
203206
cache-base: main
204-
- name: Install tree-sitter-cli
205-
run: cargo install tree-sitter-cli
207+
- uses: tree-sitter/setup-action@v2
208+
with:
209+
install-lib: false
206210
- name: Build main binary
207-
run: cargo build -p pgt_cli --release
211+
run: cargo build -p pgls_cli --release
208212
- name: Setup Bun
209213
uses: oven-sh/setup-bun@v2
210214
- name: Install JS dependencies
@@ -244,8 +248,9 @@ jobs:
244248
cache-base: main
245249
env:
246250
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
247-
- name: Install tree-sitter-cli
248-
run: cargo install tree-sitter-cli
251+
- uses: tree-sitter/setup-action@v2
252+
with:
253+
install-lib: false
249254
- name: Ensure RustFMT on nightly toolchain
250255
run: rustup component add rustfmt --toolchain nightly
251256
- name: echo toolchain

0 commit comments

Comments
 (0)