Skip to content

Commit 8322a41

Browse files
authored
chore: update toolchain and unify publish action (#566)
trusted publisher needs to define which workflow the packages are published from, and they allow only a single one… all code changes are from `cargo clippy —fix`
1 parent 81812bb commit 8322a41

File tree

45 files changed

+238
-302
lines changed

Some content is hidden

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

45 files changed

+238
-302
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 & 99 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

crates/pgt_analyse/src/categories.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ impl TryFrom<&str> for RuleCategory {
3232
"lint" => Ok(Self::Lint),
3333
"action" => Ok(Self::Action),
3434
"transformation" => Ok(Self::Transformation),
35-
_ => Err(format!("Invalid Rule Category: {}", value)),
35+
_ => Err(format!("Invalid Rule Category: {value}")),
3636
}
3737
}
3838
}

crates/pgt_analyser/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ mod tests {
150150
let text = markup_to_string(markup! {
151151
{PrintDiagnostic::simple(result)}
152152
});
153-
eprintln!("{}", text);
153+
eprintln!("{text}");
154154
}
155155
println!("*******************");
156156

crates/pgt_analyser/tests/rules_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn rule_test(full_path: &'static str, _: &str, _: &str) {
2323
};
2424

2525
let query =
26-
read_to_string(full_path).unwrap_or_else(|_| panic!("Failed to read file: {} ", full_path));
26+
read_to_string(full_path).unwrap_or_else(|_| panic!("Failed to read file: {full_path} "));
2727

2828
let options = AnalyserOptions::default();
2929
let analyser = Analyser::new(AnalyserConfig {

crates/pgt_cli/src/service/unix.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ fn spawn_daemon(
7777
}
7878

7979
if let Some(log_file_name_prefix) = log_file_name_prefix {
80-
cmd.arg(format!("--log-prefix-name={}", log_file_name_prefix));
80+
cmd.arg(format!("--log-prefix-name={log_file_name_prefix}"));
8181
}
8282

8383
// Create a new session for the process and make it the leader, this will

0 commit comments

Comments
 (0)