From e68f8e89f232a50ad2756b2635cf9d2dafb4e103 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 24 Oct 2025 11:30:31 +0200 Subject: [PATCH 1/3] chore: update toolchain and unify publish workflow --- .github/workflows/publish.dispatch.yml | 72 ------------ .github/workflows/publish.reusable.yml | 99 ---------------- .github/workflows/publish.trigger.yml | 16 --- .github/workflows/publish.yml | 154 +++++++++++++++++++++++++ rust-toolchain.toml | 2 +- 5 files changed, 155 insertions(+), 188 deletions(-) delete mode 100644 .github/workflows/publish.dispatch.yml delete mode 100644 .github/workflows/publish.reusable.yml delete mode 100644 .github/workflows/publish.trigger.yml create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.dispatch.yml b/.github/workflows/publish.dispatch.yml deleted file mode 100644 index 0f1b3d5f1..000000000 --- a/.github/workflows/publish.dispatch.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Publish NPM (Manual) - -on: - workflow_dispatch: - inputs: - release-tag: - type: string - required: true - description: Release Tag to Publish - -jobs: - validate_tag: - runs-on: ubuntu-latest - outputs: - is-prerelease: ${{ steps.validate-release.outputs.is-prerelease }} - steps: - - uses: actions/github-script@v7 - id: validate-release - with: - script: | - /** the "core" module does not have access to workflow_dispatch inputs */ - const tag = '${{ inputs.release-tag }}'; - - /** Releases don't have a guaranteed order, so we'll have to paginate */ - let exhausted = false; - let page = 1; - while (!exhausted) { - const releases = await github.rest.repos.listReleases({ - owner: context.repo.owner, - repo: context.repo.repo, - page, - per_page: 100, - }).then(r => r.data); - - const matchingRelease = releases.find(r => r.tag_name === tag); - if (matchingRelease) { - core.setOutput('has-release', 'true'); - core.setOutput('is-prerelease', matchingRelease.prerelease.toString()); - return; - } - - if (releases.length < 100) { - exhausted = true; - } else if (page >= 10) { - throw new Error("We iterated over 10 pages. Does the script work?"); - } else { - page++ - } - - } - - core.setOutput('has-release', 'false'); - core.setOutput('is-prerelease', 'false'); - - - name: Abort - if: steps.validate-release.outputs.has-release != 'true' - run: | - { - echo "Tag ${{ github.event.inputs.release-tag }} not found." - exit 1 - } - - publish_npm: - needs: validate_tag - uses: ./.github/workflows/publish.reusable.yml - permissions: - contents: write - id-token: write - with: - release-tag: ${{ github.event.inputs.release-tag }} - is-prerelease: ${{ needs.validate_tag.outputs.is-prerelease }} - secrets: inherit diff --git a/.github/workflows/publish.reusable.yml b/.github/workflows/publish.reusable.yml deleted file mode 100644 index 0b5e59b8e..000000000 --- a/.github/workflows/publish.reusable.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: Publish to NPM & Brew - -on: - workflow_call: - inputs: - release-tag: - type: string - required: true - is-prerelease: - type: string - required: true - -jobs: - publish: - name: Publish All the Things - runs-on: ubuntu-latest - permissions: - contents: write - id-token: write - steps: - - uses: actions/checkout@v4 - - - name: Install Node - uses: actions/setup-node@v4 - with: - node-version: lts/* - registry-url: "https://registry.npmjs.org" - - # Ensure npm 11.5.1 or later is installed for trusted publishing support - - name: Update npm - run: npm install -g npm@latest - - - name: Verify `jq` is installed - run: | - if ! jq --version 2>/dev/null; then - echo "jq not installed, required for extracting package names." - exit 1 - fi - - - name: Generate Packages (deprecated) - id: generate-packages-deprecated - run: node packages/@postgrestools/postgrestools/scripts/generate-packages.mjs - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_TAG: ${{ inputs.release-tag }} - PRERELEASE: ${{ inputs.is-prerelease }} - - - name: Generate Packages - id: generate-packages - run: node packages/@postgres-language-server/cli/scripts/generate-packages.mjs - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_TAG: ${{ inputs.release-tag }} - PRERELEASE: ${{ inputs.is-prerelease }} - - - name: Publish npm packages as nightly (deprecated) - if: inputs.is-prerelease == 'true' - run: | - for package in packages/@postgrestools/*; do - npm publish "$package" --tag nightly --access public --provenance - done - - - name: Publish npm packages as nightly - if: inputs.is-prerelease == 'true' - run: | - for package in packages/@postgres-language-server/*; do - npm publish "$package" --tag nightly --access public --provenance - done - - - name: Publish npm packages as latest (deprecated) - if: inputs.is-prerelease != 'true' - run: | - for package in packages/@postgrestools/*; do - version="${{ inputs.release-tag }}" - npm_package_name=$(jq -r ".name" "$package/package.json") - - if npm view "$npm_package_name@$version" version 2>/dev/null; then - echo "Package $npm_package_name@$version already exists, skipping..." - else - echo "Publishing $npm_package_name@$version..." - npm publish "$package" --tag latest --access public --provenance - fi - done - - - name: Publish npm packages as latest - if: inputs.is-prerelease != 'true' - run: | - for package in packages/@postgres-language-server/*; do - version="${{ inputs.release-tag }}" - npm_package_name=$(jq -r ".name" "$package/package.json") - - if npm view "$npm_package_name@$version" version 2>/dev/null; then - echo "Package $npm_package_name@$version already exists, skipping..." - else - echo "Publishing $npm_package_name@$version..." - npm publish "$package" --tag latest --access public --provenance - fi - done - diff --git a/.github/workflows/publish.trigger.yml b/.github/workflows/publish.trigger.yml deleted file mode 100644 index b2a102a56..000000000 --- a/.github/workflows/publish.trigger.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Publish NPM (Automatic) - -on: - release: - types: [released, prereleased] - -jobs: - publish_npm: - uses: ./.github/workflows/publish.reusable.yml - permissions: - contents: write - id-token: write - with: - release-tag: ${{ github.event.release.tag_name }} - is-prerelease: ${{ github.event.release.prerelease }} - secrets: inherit diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 000000000..40783b9e7 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,154 @@ +name: Publish NPM + +on: + workflow_dispatch: + inputs: + release-tag: + type: string + required: true + description: Release Tag to Publish + release: + types: [released, prereleased] + +jobs: + validate_tag: + if: github.event_name == 'workflow_dispatch' + runs-on: ubuntu-latest + outputs: + is-prerelease: ${{ steps.validate-release.outputs.is-prerelease }} + steps: + - uses: actions/github-script@v7 + id: validate-release + with: + script: | + /** the "core" module does not have access to workflow_dispatch inputs */ + const tag = '${{ inputs.release-tag }}'; + + /** Releases don't have a guaranteed order, so we'll have to paginate */ + let exhausted = false; + let page = 1; + while (!exhausted) { + const releases = await github.rest.repos.listReleases({ + owner: context.repo.owner, + repo: context.repo.repo, + page, + per_page: 100, + }).then(r => r.data); + + const matchingRelease = releases.find(r => r.tag_name === tag); + if (matchingRelease) { + core.setOutput('has-release', 'true'); + core.setOutput('is-prerelease', matchingRelease.prerelease.toString()); + return; + } + + if (releases.length < 100) { + exhausted = true; + } else if (page >= 10) { + throw new Error("We iterated over 10 pages. Does the script work?"); + } else { + page++ + } + + } + + core.setOutput('has-release', 'false'); + core.setOutput('is-prerelease', 'false'); + + - name: Abort + if: steps.validate-release.outputs.has-release != 'true' + run: | + { + echo "Tag ${{ github.event.inputs.release-tag }} not found." + exit 1 + } + + publish: + name: Publish All the Things + needs: [validate_tag] + if: | + always() && + (needs.validate_tag.result == 'success' || needs.validate_tag.result == 'skipped') + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - uses: actions/checkout@v4 + + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: lts/* + registry-url: "https://registry.npmjs.org" + + # Ensure npm 11.5.1 or later is installed for trusted publishing support + - name: Update npm + run: npm install -g npm@latest + + - name: Verify `jq` is installed + run: | + if ! jq --version 2>/dev/null; then + echo "jq not installed, required for extracting package names." + exit 1 + fi + + - name: Generate Packages (deprecated) + id: generate-packages-deprecated + run: node packages/@postgrestools/postgrestools/scripts/generate-packages.mjs + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }} + PRERELEASE: ${{ github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease || github.event.release.prerelease }} + + - name: Generate Packages + id: generate-packages + run: node packages/@postgres-language-server/cli/scripts/generate-packages.mjs + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }} + PRERELEASE: ${{ github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease || github.event.release.prerelease }} + + - name: Publish npm packages as nightly (deprecated) + if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease == 'true') || (github.event_name == 'release' && github.event.release.prerelease) + run: | + for package in packages/@postgrestools/*; do + npm publish "$package" --tag nightly --access public --provenance + done + + - name: Publish npm packages as nightly + if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease == 'true') || (github.event_name == 'release' && github.event.release.prerelease) + run: | + for package in packages/@postgres-language-server/*; do + npm publish "$package" --tag nightly --access public --provenance + done + + - name: Publish npm packages as latest (deprecated) + if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease != 'true') || (github.event_name == 'release' && !github.event.release.prerelease) + run: | + for package in packages/@postgrestools/*; do + version="${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }}" + npm_package_name=$(jq -r ".name" "$package/package.json") + + if npm view "$npm_package_name@$version" version 2>/dev/null; then + echo "Package $npm_package_name@$version already exists, skipping..." + else + echo "Publishing $npm_package_name@$version..." + npm publish "$package" --tag latest --access public --provenance + fi + done + + - name: Publish npm packages as latest + if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease != 'true') || (github.event_name == 'release' && !github.event.release.prerelease) + run: | + for package in packages/@postgres-language-server/*; do + version="${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }}" + npm_package_name=$(jq -r ".name" "$package/package.json") + + if npm view "$npm_package_name@$version" version 2>/dev/null; then + echo "Package $npm_package_name@$version already exists, skipping..." + else + echo "Publishing $npm_package_name@$version..." + npm publish "$package" --tag latest --access public --provenance + fi + done diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 4501f2a1a..45ef49e39 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] profile = "default" -channel = "1.86.0" +channel = "1.88.0" From 80b645ef7737d32170f909ac1698e4e52de19330 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 24 Oct 2025 11:48:07 +0200 Subject: [PATCH 2/3] progress --- .github/workflows/publish.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 40783b9e7..fcdaace27 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,7 +3,7 @@ name: Publish NPM on: workflow_dispatch: inputs: - release-tag: + release_tag: type: string required: true description: Release Tag to Publish @@ -22,7 +22,7 @@ jobs: with: script: | /** the "core" module does not have access to workflow_dispatch inputs */ - const tag = '${{ inputs.release-tag }}'; + const tag = '${{ inputs.release_tag }}'; /** Releases don't have a guaranteed order, so we'll have to paginate */ let exhausted = false; @@ -59,7 +59,7 @@ jobs: if: steps.validate-release.outputs.has-release != 'true' run: | { - echo "Tag ${{ github.event.inputs.release-tag }} not found." + echo "Tag ${{ github.event.inputs.release_tag }} not found." exit 1 } @@ -98,7 +98,7 @@ jobs: run: node packages/@postgrestools/postgrestools/scripts/generate-packages.mjs env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }} + RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }} PRERELEASE: ${{ github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease || github.event.release.prerelease }} - name: Generate Packages @@ -106,7 +106,7 @@ jobs: run: node packages/@postgres-language-server/cli/scripts/generate-packages.mjs env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }} + RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }} PRERELEASE: ${{ github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease || github.event.release.prerelease }} - name: Publish npm packages as nightly (deprecated) @@ -127,7 +127,7 @@ jobs: if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease != 'true') || (github.event_name == 'release' && !github.event.release.prerelease) run: | for package in packages/@postgrestools/*; do - version="${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }}" + version="${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}" npm_package_name=$(jq -r ".name" "$package/package.json") if npm view "$npm_package_name@$version" version 2>/dev/null; then @@ -142,7 +142,7 @@ jobs: if: (github.event_name == 'workflow_dispatch' && needs.validate_tag.outputs.is-prerelease != 'true') || (github.event_name == 'release' && !github.event.release.prerelease) run: | for package in packages/@postgres-language-server/*; do - version="${{ github.event_name == 'workflow_dispatch' && inputs.release-tag || github.event.release.tag_name }}" + version="${{ github.event_name == 'workflow_dispatch' && inputs.release_tag || github.event.release.tag_name }}" npm_package_name=$(jq -r ".name" "$package/package.json") if npm view "$npm_package_name@$version" version 2>/dev/null; then From 3386a15af35ef8627c10257d26814650a03e0d60 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 24 Oct 2025 11:53:40 +0200 Subject: [PATCH 3/3] progress --- crates/pgt_analyse/src/categories.rs | 2 +- crates/pgt_analyser/src/lib.rs | 2 +- crates/pgt_analyser/tests/rules_tests.rs | 2 +- crates/pgt_cli/src/service/unix.rs | 2 +- .../pgt_completions/benches/sanitization.rs | 22 ++++++++----------- crates/pgt_completions/src/builder.rs | 2 +- .../pgt_completions/src/providers/helper.rs | 4 ++-- crates/pgt_completions/src/test_helper.rs | 6 ++--- crates/pgt_configuration/src/lib.rs | 2 +- crates/pgt_hover/src/hoverables/column.rs | 8 +++---- crates/pgt_hover/src/hoverables/function.rs | 10 ++++----- .../pgt_hover/src/hoverables/postgres_type.rs | 4 ++-- crates/pgt_hover/src/hoverables/role.rs | 8 +++---- crates/pgt_hover/src/hoverables/schema.rs | 6 ++--- crates/pgt_hover/src/hoverables/table.rs | 6 ++--- .../pgt_hover/src/hoverables/test_helper.rs | 6 ++--- crates/pgt_lexer_codegen/build.rs | 6 ++--- crates/pgt_lsp/src/handlers/completions.rs | 2 +- crates/pgt_plpgsql_check/src/lib.rs | 14 +++++------- crates/pgt_query/build.rs | 3 +-- crates/pgt_query/examples/api_example.rs | 2 +- crates/pgt_query_macros/build.rs | 6 ++--- crates/pgt_schema_cache/src/columns.rs | 3 +-- crates/pgt_schema_cache/src/policies.rs | 2 +- crates/pgt_statement_splitter/src/splitter.rs | 2 +- crates/pgt_suppressions/src/suppression.rs | 10 +++------ crates/pgt_test_macros/src/lib.rs | 4 ++-- crates/pgt_text_size/src/serde_impls.rs | 3 +-- crates/pgt_treesitter/src/context/mod.rs | 6 ++--- crates/pgt_typecheck/src/diagnostics.rs | 4 ++-- crates/pgt_typecheck/src/typed_identifier.rs | 2 +- crates/pgt_workspace/src/configuration.rs | 4 ++-- crates/pgt_workspace/src/settings.rs | 4 ++-- crates/pgt_workspace/src/workspace/server.rs | 6 +---- .../src/workspace/server/pg_query.rs | 2 +- docs/codegen/src/rules_docs.rs | 10 +++------ docs/codegen/src/rules_index.rs | 2 +- docs/codegen/src/utils.rs | 3 +-- xtask/codegen/src/generate_bindings.rs | 2 +- .../codegen/src/generate_new_analyser_rule.rs | 3 +-- 40 files changed, 83 insertions(+), 114 deletions(-) diff --git a/crates/pgt_analyse/src/categories.rs b/crates/pgt_analyse/src/categories.rs index 02819a4ea..a6b10d40d 100644 --- a/crates/pgt_analyse/src/categories.rs +++ b/crates/pgt_analyse/src/categories.rs @@ -32,7 +32,7 @@ impl TryFrom<&str> for RuleCategory { "lint" => Ok(Self::Lint), "action" => Ok(Self::Action), "transformation" => Ok(Self::Transformation), - _ => Err(format!("Invalid Rule Category: {}", value)), + _ => Err(format!("Invalid Rule Category: {value}")), } } } diff --git a/crates/pgt_analyser/src/lib.rs b/crates/pgt_analyser/src/lib.rs index f559090ef..f01380051 100644 --- a/crates/pgt_analyser/src/lib.rs +++ b/crates/pgt_analyser/src/lib.rs @@ -150,7 +150,7 @@ mod tests { let text = markup_to_string(markup! { {PrintDiagnostic::simple(result)} }); - eprintln!("{}", text); + eprintln!("{text}"); } println!("*******************"); diff --git a/crates/pgt_analyser/tests/rules_tests.rs b/crates/pgt_analyser/tests/rules_tests.rs index 5334246b8..d5a522c19 100644 --- a/crates/pgt_analyser/tests/rules_tests.rs +++ b/crates/pgt_analyser/tests/rules_tests.rs @@ -23,7 +23,7 @@ fn rule_test(full_path: &'static str, _: &str, _: &str) { }; let query = - read_to_string(full_path).unwrap_or_else(|_| panic!("Failed to read file: {} ", full_path)); + read_to_string(full_path).unwrap_or_else(|_| panic!("Failed to read file: {full_path} ")); let options = AnalyserOptions::default(); let analyser = Analyser::new(AnalyserConfig { diff --git a/crates/pgt_cli/src/service/unix.rs b/crates/pgt_cli/src/service/unix.rs index 2ff7adb07..ca2d6b028 100644 --- a/crates/pgt_cli/src/service/unix.rs +++ b/crates/pgt_cli/src/service/unix.rs @@ -77,7 +77,7 @@ fn spawn_daemon( } if let Some(log_file_name_prefix) = log_file_name_prefix { - cmd.arg(format!("--log-prefix-name={}", log_file_name_prefix)); + cmd.arg(format!("--log-prefix-name={log_file_name_prefix}")); } // Create a new session for the process and make it the leader, this will diff --git a/crates/pgt_completions/benches/sanitization.rs b/crates/pgt_completions/benches/sanitization.rs index 5a31a50a5..5d0011576 100644 --- a/crates/pgt_completions/benches/sanitization.rs +++ b/crates/pgt_completions/benches/sanitization.rs @@ -35,7 +35,7 @@ fn to_params<'a>( pub fn criterion_benchmark(c: &mut Criterion) { c.bench_function("small sql, adjusted", |b| { - let content = format!("select {} from users;", CURSOR_POS); + let content = format!("select {CURSOR_POS} from users;"); let cache = SchemaCache::default(); let (sql, pos) = sql_and_pos(content.as_str()); @@ -52,7 +52,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { u.rolname as "owner!" from pg_namespace n, - {} + {CURSOR_POS} where n.nspowner = u.oid and ( @@ -60,8 +60,7 @@ where or has_schema_privilege(n.oid, 'CREATE, USAGE') ) and not pg_catalog.starts_with(n.nspname, 'pg_temp_') - and not pg_catalog.starts_with(n.nspname, 'pg_toast_temp_');"#, - CURSOR_POS + and not pg_catalog.starts_with(n.nspname, 'pg_toast_temp_');"# ); let cache = SchemaCache::default(); @@ -98,7 +97,7 @@ where ix.indisunique as is_unique, ix.indrelid as table_oid from - {} + {CURSOR_POS} where c.relkind = 'i' ) @@ -128,8 +127,7 @@ from where -- system columns, such as `cmax` or `tableoid`, have negative `attnum`s atts.attnum >= 0; -"#, - CURSOR_POS +"# ); let cache = SchemaCache::default(); @@ -140,7 +138,7 @@ where }); c.bench_function("small sql, unadjusted", |b| { - let content = format!("select e{} from users;", CURSOR_POS); + let content = format!("select e{CURSOR_POS} from users;"); let cache = SchemaCache::default(); let (sql, pos) = sql_and_pos(content.as_str()); @@ -157,7 +155,7 @@ where u.rolname as "owner!" from pg_namespace n, - pg_r{} + pg_r{CURSOR_POS} where n.nspowner = u.oid and ( @@ -165,8 +163,7 @@ where or has_schema_privilege(n.oid, 'CREATE, USAGE') ) and not pg_catalog.starts_with(n.nspname, 'pg_temp_') - and not pg_catalog.starts_with(n.nspname, 'pg_toast_temp_');"#, - CURSOR_POS + and not pg_catalog.starts_with(n.nspname, 'pg_toast_temp_');"# ); let cache = SchemaCache::default(); @@ -235,8 +232,7 @@ where -- system columns, such as `cmax` or `tableoid`, have negative `attnum`s atts.attnum >= 0 order by - sch{} "#, - CURSOR_POS + sch{CURSOR_POS} "# ); let cache = SchemaCache::default(); diff --git a/crates/pgt_completions/src/builder.rs b/crates/pgt_completions/src/builder.rs index ed884ee95..7f3ce2863 100644 --- a/crates/pgt_completions/src/builder.rs +++ b/crates/pgt_completions/src/builder.rs @@ -76,7 +76,7 @@ impl<'a> CompletionBuilder<'a> { detail: item.detail, // wonderous Rust syntax ftw - sort_text: format!("{:0>padding$}", idx, padding = max_padding), + sort_text: format!("{idx:0>max_padding$}"), completion_text: item.completion_text, } }) diff --git a/crates/pgt_completions/src/providers/helper.rs b/crates/pgt_completions/src/providers/helper.rs index 002e8649e..a7f847e8d 100644 --- a/crates/pgt_completions/src/providers/helper.rs +++ b/crates/pgt_completions/src/providers/helper.rs @@ -52,7 +52,7 @@ pub(crate) fn with_schema_or_alias( if schema_or_alias_name.is_none_or(|s| s == "public") || is_already_prefixed_with_schema_name { if single_leading_quote { - format!(r#"{}""#, item_name) + format!(r#"{item_name}""#) } else { item_name.to_string() } @@ -64,7 +64,7 @@ pub(crate) fn with_schema_or_alias( } else if with_quotes { format!(r#"{}"."{}"#, schema_or_als.replace('"', ""), item_name) } else { - format!("{}.{}", schema_or_als, item_name) + format!("{schema_or_als}.{item_name}") } } } diff --git a/crates/pgt_completions/src/test_helper.rs b/crates/pgt_completions/src/test_helper.rs index e01c5c65d..f8a9ee843 100644 --- a/crates/pgt_completions/src/test_helper.rs +++ b/crates/pgt_completions/src/test_helper.rs @@ -106,15 +106,13 @@ impl CompletionAssertion { CompletionAssertion::LabelNotExists(label) => { assert_ne!( &item.label, label, - "Expected label {} not to exist, but found it", - label + "Expected label {label} not to exist, but found it" ); } CompletionAssertion::KindNotExists(kind) => { assert_ne!( &item.kind, kind, - "Expected kind {:?} not to exist, but found it", - kind + "Expected kind {kind:?} not to exist, but found it" ); } CompletionAssertion::LabelAndDesc(label, desc) => { diff --git a/crates/pgt_configuration/src/lib.rs b/crates/pgt_configuration/src/lib.rs index 4dde88a37..b1242b082 100644 --- a/crates/pgt_configuration/src/lib.rs +++ b/crates/pgt_configuration/src/lib.rs @@ -103,7 +103,7 @@ impl PartialConfiguration { /// Returns the initial configuration. pub fn init() -> Self { Self { - schema: Some(format!("{}/schemas/{VERSION}/schema.json", PGLS_WEBSITE)), + schema: Some(format!("{PGLS_WEBSITE}/schemas/{VERSION}/schema.json")), extends: Some(StringSet::default()), files: Some(PartialFilesConfiguration { ignore: Some(Default::default()), diff --git a/crates/pgt_hover/src/hoverables/column.rs b/crates/pgt_hover/src/hoverables/column.rs index 43e407163..260b6f261 100644 --- a/crates/pgt_hover/src/hoverables/column.rs +++ b/crates/pgt_hover/src/hoverables/column.rs @@ -24,14 +24,14 @@ impl ToHoverMarkdown for pgt_schema_cache::Column { _schema_cache: &SchemaCache, ) -> Result { if let Some(comment) = &self.comment { - write!(writer, "Comment: '{}'", comment)?; + write!(writer, "Comment: '{comment}'")?; writeln!(writer)?; } if let Some(tname) = self.type_name.as_ref() { - write!(writer, "{}", tname)?; + write!(writer, "{tname}")?; if let Some(l) = self.varchar_length { - write!(writer, "({})", l)?; + write!(writer, "({l})")?; } } else { write!(writer, "typeid: {}", self.type_id)?; @@ -61,7 +61,7 @@ impl ToHoverMarkdown for pgt_schema_cache::Column { ) -> Result { if let Some(default) = &self.default_expr { writeln!(writer)?; - write!(writer, "Default: {}", default)?; + write!(writer, "Default: {default}")?; Ok(true) } else { Ok(false) diff --git a/crates/pgt_hover/src/hoverables/function.rs b/crates/pgt_hover/src/hoverables/function.rs index 171c78f6e..b99e837b3 100644 --- a/crates/pgt_hover/src/hoverables/function.rs +++ b/crates/pgt_hover/src/hoverables/function.rs @@ -18,7 +18,7 @@ impl ToHoverMarkdown for Function { write!(writer, "`{}.{}", self.schema, self.name)?; if let Some(args) = &self.argument_types { - write!(writer, "({})", args)?; + write!(writer, "({args})")?; } else { write!(writer, "()")?; } @@ -44,7 +44,7 @@ impl ToHoverMarkdown for Function { pgt_schema_cache::ProcKind::Window => "Window", }; - write!(writer, "{}", kind_text)?; + write!(writer, "{kind_text}")?; let behavior_text = match self.behavior { pgt_schema_cache::Behavior::Immutable => " - Immutable", @@ -52,7 +52,7 @@ impl ToHoverMarkdown for Function { pgt_schema_cache::Behavior::Volatile => "", }; - write!(writer, "{}", behavior_text)?; + write!(writer, "{behavior_text}")?; if self.security_definer { write!(writer, " - Security DEFINER")?; @@ -100,12 +100,12 @@ impl ToHoverMarkdown for Function { } _ => { - write!(writer, "{}", char)?; + write!(writer, "{char}")?; } } } } else { - write!(writer, "\n{}\n", def)?; + write!(writer, "\n{def}\n")?; } Ok(true) diff --git a/crates/pgt_hover/src/hoverables/postgres_type.rs b/crates/pgt_hover/src/hoverables/postgres_type.rs index e9dced294..8265c4674 100644 --- a/crates/pgt_hover/src/hoverables/postgres_type.rs +++ b/crates/pgt_hover/src/hoverables/postgres_type.rs @@ -21,7 +21,7 @@ impl ToHoverMarkdown for PostgresType { schema_cache: &SchemaCache, ) -> Result { if let Some(comment) = &self.comment { - write!(writer, "Comment: '{}'", comment)?; + write!(writer, "Comment: '{comment}'")?; writeln!(writer)?; writeln!(writer)?; } @@ -56,7 +56,7 @@ impl ToHoverMarkdown for PostgresType { writeln!(writer)?; for kind in &self.enums.values { - write!(writer, "- {}", kind)?; + write!(writer, "- {kind}")?; writeln!(writer)?; } diff --git a/crates/pgt_hover/src/hoverables/role.rs b/crates/pgt_hover/src/hoverables/role.rs index d6b440382..dfa3c5506 100644 --- a/crates/pgt_hover/src/hoverables/role.rs +++ b/crates/pgt_hover/src/hoverables/role.rs @@ -22,7 +22,7 @@ impl ToHoverMarkdown for pgt_schema_cache::Role { _schema_cache: &SchemaCache, ) -> Result { if let Some(comm) = self.comment.as_ref() { - write!(writer, "Comment: '{}'", comm)?; + write!(writer, "Comment: '{comm}'")?; writeln!(writer)?; writeln!(writer)?; } @@ -54,7 +54,7 @@ impl ToHoverMarkdown for pgt_schema_cache::Role { writeln!(writer)?; for perm in permissions { - write!(writer, "- {}", perm)?; + write!(writer, "- {perm}")?; writeln!(writer)?; } writeln!(writer)?; @@ -69,7 +69,7 @@ impl ToHoverMarkdown for pgt_schema_cache::Role { writeln!(writer)?; for mem in &self.member_of { - write!(writer, "- {}", mem)?; + write!(writer, "- {mem}")?; writeln!(writer)?; } @@ -81,7 +81,7 @@ impl ToHoverMarkdown for pgt_schema_cache::Role { writeln!(writer)?; for mem in &self.has_member { - write!(writer, "- {}", mem)?; + write!(writer, "- {mem}")?; writeln!(writer)?; } } diff --git a/crates/pgt_hover/src/hoverables/schema.rs b/crates/pgt_hover/src/hoverables/schema.rs index 90281371a..239eabb5f 100644 --- a/crates/pgt_hover/src/hoverables/schema.rs +++ b/crates/pgt_hover/src/hoverables/schema.rs @@ -22,7 +22,7 @@ impl ToHoverMarkdown for Schema { _schema_cache: &SchemaCache, ) -> Result { if let Some(comment) = &self.comment { - write!(writer, "Comment: '{}'", comment)?; + write!(writer, "Comment: '{comment}'")?; writeln!(writer)?; writeln!(writer)?; } @@ -32,7 +32,7 @@ impl ToHoverMarkdown for Schema { writeln!(writer)?; for creator in &self.allowed_creators { - write!(writer, "- {}", creator)?; + write!(writer, "- {creator}")?; writeln!(writer)?; } @@ -44,7 +44,7 @@ impl ToHoverMarkdown for Schema { writeln!(writer)?; for user in &self.allowed_users { - write!(writer, "- {}", user)?; + write!(writer, "- {user}")?; writeln!(writer)?; } diff --git a/crates/pgt_hover/src/hoverables/table.rs b/crates/pgt_hover/src/hoverables/table.rs index a12132102..a623ea73f 100644 --- a/crates/pgt_hover/src/hoverables/table.rs +++ b/crates/pgt_hover/src/hoverables/table.rs @@ -21,7 +21,7 @@ impl ToHoverMarkdown for Table { pgt_schema_cache::TableKind::Ordinary => "", }; - write!(writer, "{}", table_kind)?; + write!(writer, "{table_kind}")?; let locked_txt = if self.rls_enabled { " - 🔒 RLS enabled" @@ -29,7 +29,7 @@ impl ToHoverMarkdown for Table { " - 🔓 RLS disabled" }; - write!(writer, "{}", locked_txt)?; + write!(writer, "{locked_txt}")?; Ok(()) } @@ -40,7 +40,7 @@ impl ToHoverMarkdown for Table { _schema_cache: &SchemaCache, ) -> Result { if let Some(comment) = &self.comment { - write!(writer, "Comment: '{}'", comment)?; + write!(writer, "Comment: '{comment}'")?; writeln!(writer)?; Ok(true) } else { diff --git a/crates/pgt_hover/src/hoverables/test_helper.rs b/crates/pgt_hover/src/hoverables/test_helper.rs index c53a109ef..6d469984e 100644 --- a/crates/pgt_hover/src/hoverables/test_helper.rs +++ b/crates/pgt_hover/src/hoverables/test_helper.rs @@ -22,11 +22,9 @@ pub(crate) fn create_test_context(query: QueryWithCursorPosition) -> TreesitterC let position = TextSize::new(pos.try_into().unwrap()); - let ctx = pgt_treesitter::context::TreesitterContext::new(TreeSitterContextParams { + pgt_treesitter::context::TreesitterContext::new(TreeSitterContextParams { position, text: leaked_sql, tree: leaked_tree, - }); - - ctx + }) } diff --git a/crates/pgt_lexer_codegen/build.rs b/crates/pgt_lexer_codegen/build.rs index fc15b7749..fe470352e 100644 --- a/crates/pgt_lexer_codegen/build.rs +++ b/crates/pgt_lexer_codegen/build.rs @@ -13,15 +13,13 @@ fn main() -> Result<(), Box> { // Download kwlist.h if not already present in source directory if !kwlist_path.exists() { println!( - "cargo:warning=Downloading kwlist.h for libpg_query {} to source directory", - LIBPG_QUERY_TAG + "cargo:warning=Downloading kwlist.h for libpg_query {LIBPG_QUERY_TAG} to source directory" ); fs::create_dir_all(&vendor_dir)?; let kwlist_url = format!( - "https://raw.githubusercontent.com/pganalyze/libpg_query/{}/src/postgres/include/parser/kwlist.h", - LIBPG_QUERY_TAG + "https://raw.githubusercontent.com/pganalyze/libpg_query/{LIBPG_QUERY_TAG}/src/postgres/include/parser/kwlist.h" ); let response = ureq::get(&kwlist_url).call()?; diff --git a/crates/pgt_lsp/src/handlers/completions.rs b/crates/pgt_lsp/src/handlers/completions.rs index 4a035fcf8..5a34f39e8 100644 --- a/crates/pgt_lsp/src/handlers/completions.rs +++ b/crates/pgt_lsp/src/handlers/completions.rs @@ -43,7 +43,7 @@ pub fn get_completions( description: Some(i.description), detail: i .detail - .map(|s| format!(" {}", s)) + .map(|s| format!(" {s}")) .or(Some(format!(" {}", i.kind))), }), preselect: Some(i.preselected), diff --git a/crates/pgt_plpgsql_check/src/lib.rs b/crates/pgt_plpgsql_check/src/lib.rs index e6f2524fc..636e15b2c 100644 --- a/crates/pgt_plpgsql_check/src/lib.rs +++ b/crates/pgt_plpgsql_check/src/lib.rs @@ -102,14 +102,14 @@ fn build_function_identifier( let type_name_node = node.arg_type.as_ref()?; let type_name = match pgt_query_ext::utils::parse_name(&type_name_node.names) { Some((schema, name)) => match schema { - Some(s) => format!("{}.{}", s, name), + Some(s) => format!("{s}.{name}"), None => name, }, None => return None, }; if !type_name_node.array_bounds.is_empty() { - Some(format!("{}[]", type_name)) + Some(format!("{type_name}[]")) } else { Some(type_name) } @@ -117,7 +117,7 @@ fn build_function_identifier( .collect::>(); let fn_qualified_name = match fn_schema { - Some(schema) => format!("{}.{}", schema, fn_name), + Some(schema) => format!("{schema}.{fn_name}"), None => fn_name.to_string(), }; @@ -184,8 +184,7 @@ pub async fn check_plpgsql( let relation = format!("{}.{}", trigger.table_schema, trigger.table_name); let result: Option = sqlx::query_scalar(&format!( - "select plpgsql_check_function('{}', '{}', format := 'json')", - fn_identifier, relation + "select plpgsql_check_function('{fn_identifier}', '{relation}', format := 'json')" )) .fetch_optional(&mut *tx) .await? @@ -200,8 +199,7 @@ pub async fn check_plpgsql( results } else { let result: Option = sqlx::query_scalar(&format!( - "select plpgsql_check_function('{}', format := 'json')", - fn_identifier + "select plpgsql_check_function('{fn_identifier}', format := 'json')" )) .fetch_optional(&mut *tx) .await? @@ -220,7 +218,7 @@ pub async fn check_plpgsql( let mut diagnostics = Vec::new(); for (result_json, relation) in results_with_relations { let check_result: PlpgSqlCheckResult = serde_json::from_str(&result_json).map_err(|e| { - sqlx::Error::Protocol(format!("Failed to parse plpgsql_check result: {}", e)) + sqlx::Error::Protocol(format!("Failed to parse plpgsql_check result: {e}")) })?; let mut result_diagnostics = diff --git a/crates/pgt_query/build.rs b/crates/pgt_query/build.rs index 6570746bc..6cd762246 100644 --- a/crates/pgt_query/build.rs +++ b/crates/pgt_query/build.rs @@ -137,8 +137,7 @@ fn main() -> Result<(), Box> { // First try to use EMSDK environment variable (set in CI and when sourcing emsdk_env.sh) if let Ok(emsdk) = env::var("EMSDK") { bindgen_builder = bindgen_builder.clang_arg(format!( - "-I{}/upstream/emscripten/cache/sysroot/include", - emsdk + "-I{emsdk}/upstream/emscripten/cache/sysroot/include" )); } else { // Fallback to the default path if EMSDK is not set diff --git a/crates/pgt_query/examples/api_example.rs b/crates/pgt_query/examples/api_example.rs index d71b1c0fe..1956b7a7b 100644 --- a/crates/pgt_query/examples/api_example.rs +++ b/crates/pgt_query/examples/api_example.rs @@ -17,7 +17,7 @@ fn main() { .iter() .filter(|n| matches!(n, NodeRef::SelectStmt(_))) .count(); - println!("Number of SELECT statements: {}", select_count); + println!("Number of SELECT statements: {select_count}"); } // Mutable access - no cloning needed! diff --git a/crates/pgt_query_macros/build.rs b/crates/pgt_query_macros/build.rs index 235227ee3..c33a1b9c1 100644 --- a/crates/pgt_query_macros/build.rs +++ b/crates/pgt_query_macros/build.rs @@ -13,15 +13,13 @@ fn main() -> Result<(), Box> { // Download proto file if not already present in source directory if !proto_path.exists() { println!( - "cargo:warning=Downloading pg_query.proto for libpg_query {} to source directory", - LIBPG_QUERY_TAG + "cargo:warning=Downloading pg_query.proto for libpg_query {LIBPG_QUERY_TAG} to source directory" ); fs::create_dir_all(&vendor_dir)?; let proto_url = format!( - "https://raw.githubusercontent.com/pganalyze/libpg_query/{}/protobuf/pg_query.proto", - LIBPG_QUERY_TAG + "https://raw.githubusercontent.com/pganalyze/libpg_query/{LIBPG_QUERY_TAG}/protobuf/pg_query.proto" ); let response = ureq::get(&proto_url).call()?; diff --git a/crates/pgt_schema_cache/src/columns.rs b/crates/pgt_schema_cache/src/columns.rs index b08b1f3da..7907611cd 100644 --- a/crates/pgt_schema_cache/src/columns.rs +++ b/crates/pgt_schema_cache/src/columns.rs @@ -18,8 +18,7 @@ impl From<&str> for ColumnClassKind { "f" => ColumnClassKind::ForeignTable, "p" => ColumnClassKind::PartitionedTable, _ => panic!( - "Columns belonging to a class with pg_class.relkind = '{}' should be filtered out in the query.", - value + "Columns belonging to a class with pg_class.relkind = '{value}' should be filtered out in the query." ), } } diff --git a/crates/pgt_schema_cache/src/policies.rs b/crates/pgt_schema_cache/src/policies.rs index 8e2ee4d70..0b9e80674 100644 --- a/crates/pgt_schema_cache/src/policies.rs +++ b/crates/pgt_schema_cache/src/policies.rs @@ -17,7 +17,7 @@ impl From<&str> for PolicyCommand { "UPDATE" => PolicyCommand::Update, "DELETE" => PolicyCommand::Delete, "ALL" => PolicyCommand::All, - _ => panic!("Invalid Policy Command {}", value), + _ => panic!("Invalid Policy Command {value}"), } } } diff --git a/crates/pgt_statement_splitter/src/splitter.rs b/crates/pgt_statement_splitter/src/splitter.rs index 2ce382085..812bd6b26 100644 --- a/crates/pgt_statement_splitter/src/splitter.rs +++ b/crates/pgt_statement_splitter/src/splitter.rs @@ -182,7 +182,7 @@ impl<'a> Splitter<'a> { }; self.errors.push(SplitError { - msg: format!("Expected {:#?}", kind), + msg: format!("Expected {kind:#?}"), token, }); }; diff --git a/crates/pgt_suppressions/src/suppression.rs b/crates/pgt_suppressions/src/suppression.rs index 6ebaf25c8..e8173e4d6 100644 --- a/crates/pgt_suppressions/src/suppression.rs +++ b/crates/pgt_suppressions/src/suppression.rs @@ -149,8 +149,7 @@ impl Suppression { return Err(SuppressionDiagnostic { span, message: MessageAndDescription::from(format!( - "'{}' is not a valid suppression tag.", - k, + "'{k}' is not a valid suppression tag.", )), }); } @@ -375,7 +374,7 @@ mod tests { let offset = &TextSize::new(0); for line in lines { let result = Suppression::from_line(line, offset); - assert!(result.is_err(), "Expected error for line: {}", line); + assert!(result.is_err(), "Expected error for line: {line}"); } } @@ -414,10 +413,7 @@ mod tests { assert_eq!( suppression.matches(&specifier), expected, - "Suppression line '{}' vs specifier '{}' should be {}", - suppr_line, - specifier_str, - expected + "Suppression line '{suppr_line}' vs specifier '{specifier_str}' should be {expected}" ); } } diff --git a/crates/pgt_test_macros/src/lib.rs b/crates/pgt_test_macros/src/lib.rs index e8b954cfd..65dde3980 100644 --- a/crates/pgt_test_macros/src/lib.rs +++ b/crates/pgt_test_macros/src/lib.rs @@ -211,7 +211,7 @@ impl TryFrom for Variables { .to_str() .ok_or("Cannot convert extension to string.")? .into(); - assert_eq!(ext, "sql", "Expected .sql extension but received: {}", ext); + assert_eq!(ext, "sql", "Expected .sql extension but received: {ext}"); let test_dir: String = path .parent() @@ -234,7 +234,7 @@ impl TryFrom for Variables { .ok_or("Cannot convert file stem to string.")? .into(); - let test_expected_fullpath = format!("{}.expected.{}", without_ext, ext); + let test_expected_fullpath = format!("{without_ext}.expected.{ext}"); Ok(Variables { test_name, diff --git a/crates/pgt_text_size/src/serde_impls.rs b/crates/pgt_text_size/src/serde_impls.rs index a422c75fa..9e4e42b7b 100644 --- a/crates/pgt_text_size/src/serde_impls.rs +++ b/crates/pgt_text_size/src/serde_impls.rs @@ -39,8 +39,7 @@ impl<'de> Deserialize<'de> for TextRange { let (start, end) = Deserialize::deserialize(deserializer)?; if !(start <= end) { return Err(de::Error::custom(format!( - "invalid range: {:?}..{:?}", - start, end + "invalid range: {start:?}..{end:?}" ))); } Ok(TextRange::new(start, end)) diff --git a/crates/pgt_treesitter/src/context/mod.rs b/crates/pgt_treesitter/src/context/mod.rs index 9c404dadb..641b90849 100644 --- a/crates/pgt_treesitter/src/context/mod.rs +++ b/crates/pgt_treesitter/src/context/mod.rs @@ -113,7 +113,7 @@ impl TryFrom<&str> for WrappingNode { "binary_expression" => Ok(Self::BinaryExpression), "list" => Ok(Self::List), _ => { - let message = format!("Unimplemented Relation: {}", value); + let message = format!("Unimplemented Relation: {value}"); // Err on tests, so we notice that we're lacking an implementation immediately. if cfg!(test) { @@ -875,7 +875,7 @@ impl<'a> TreesitterContext<'a> { .get(&Some(sanitized_key.clone())) .or(self .mentioned_relations - .get(&Some(format!(r#""{}""#, sanitized_key)))) + .get(&Some(format!(r#""{sanitized_key}""#)))) } else { self.mentioned_relations.get(&None) } @@ -886,7 +886,7 @@ impl<'a> TreesitterContext<'a> { self.mentioned_table_aliases.get(&sanitized_key).or(self .mentioned_table_aliases - .get(&format!(r#""{}""#, sanitized_key))) + .get(&format!(r#""{sanitized_key}""#))) } pub fn get_used_alias_for_table(&self, table_name: &str) -> Option { diff --git a/crates/pgt_typecheck/src/diagnostics.rs b/crates/pgt_typecheck/src/diagnostics.rs index cc802d799..f44cb20c4 100644 --- a/crates/pgt_typecheck/src/diagnostics.rs +++ b/crates/pgt_typecheck/src/diagnostics.rs @@ -145,8 +145,8 @@ pub fn rewrite_error_message( // e.g. `""` is replaced with `text`. let unquoted_default = replacement.default_value.trim_matches('\''); pg_error_message - .replace(&format!("\"{}\"", unquoted_default), &replacement.type_name) - .replace(&format!("'{}'", unquoted_default), &replacement.type_name) + .replace(&format!("\"{unquoted_default}\""), &replacement.type_name) + .replace(&format!("'{unquoted_default}'"), &replacement.type_name) } pub(crate) fn create_type_error( diff --git a/crates/pgt_typecheck/src/typed_identifier.rs b/crates/pgt_typecheck/src/typed_identifier.rs index 24e2dcb1b..65617c468 100644 --- a/crates/pgt_typecheck/src/typed_identifier.rs +++ b/crates/pgt_typecheck/src/typed_identifier.rs @@ -118,7 +118,7 @@ fn get_formatted_default_value(pg_type: &PostgresType, is_array: bool) -> String // For arrays, wrap the default in array syntax if is_array { - format!("'{{{}}}'", default) + format!("'{{{default}}}'") } else { default } diff --git a/crates/pgt_workspace/src/configuration.rs b/crates/pgt_workspace/src/configuration.rs index 8b5b4936a..f0a84d1ac 100644 --- a/crates/pgt_workspace/src/configuration.rs +++ b/crates/pgt_workspace/src/configuration.rs @@ -200,9 +200,9 @@ pub fn create_config( configuration.schema = postgrestools_node_schema_path.to_str().map(String::from); } else if VERSION == "0.0.0" { // VERSION is 0.0.0 if it has not been explicitly set (e.g local dev, as fallback) - configuration.schema = Some(format!("{}/latest/schema.json", PGLS_WEBSITE)); + configuration.schema = Some(format!("{PGLS_WEBSITE}/latest/schema.json")); } else { - configuration.schema = Some(format!("{}/{VERSION}/schema.json", PGLS_WEBSITE)); + configuration.schema = Some(format!("{PGLS_WEBSITE}/{VERSION}/schema.json")); } let contents = serde_json::to_string_pretty(&configuration) diff --git a/crates/pgt_workspace/src/settings.rs b/crates/pgt_workspace/src/settings.rs index 46543980e..9b5efbd9b 100644 --- a/crates/pgt_workspace/src/settings.rs +++ b/crates/pgt_workspace/src/settings.rs @@ -510,10 +510,10 @@ impl From for DatabaseSettings { .map(|stringset| { stringset.iter().any(|pattern| { let glob = Glob::new(pattern) - .unwrap_or_else(|_| panic!("Invalid pattern: {}", pattern)) + .unwrap_or_else(|_| panic!("Invalid pattern: {pattern}")) .compile_matcher(); - glob.is_match(format!("{}/{}", host, database)) + glob.is_match(format!("{host}/{database}")) }) }) .unwrap_or(false); diff --git a/crates/pgt_workspace/src/workspace/server.rs b/crates/pgt_workspace/src/workspace/server.rs index c88f4509e..e5cebbe9a 100644 --- a/crates/pgt_workspace/src/workspace/server.rs +++ b/crates/pgt_workspace/src/workspace/server.rs @@ -175,11 +175,7 @@ impl WorkspaceServer { fn is_config_file(&self, path: &Path) -> bool { path.file_name() .and_then(|s| s.to_str()) - .is_some_and(|file_name| { - ConfigName::file_names() - .iter() - .any(|config_name| file_name == *config_name) - }) + .is_some_and(|file_name| ConfigName::file_names().contains(&file_name)) } /// Check whether a file is ignored in the top-level config `files.ignore`/`files.include` diff --git a/crates/pgt_workspace/src/workspace/server/pg_query.rs b/crates/pgt_workspace/src/workspace/server/pg_query.rs index a198ae3f7..2349f29e6 100644 --- a/crates/pgt_workspace/src/workspace/server/pg_query.rs +++ b/crates/pgt_workspace/src/workspace/server/pg_query.rs @@ -165,7 +165,7 @@ pub fn convert_to_positional_params(text: &str) -> String { let replacement = match prev_token { Some(k) if IDENTIFIER_CONTEXT.contains(&k) => deterministic_identifier(idx - 1), - _ => format!("${}", idx), + _ => format!("${idx}"), }; let original_len = token_text.len(); let replacement_len = replacement.len(); diff --git a/docs/codegen/src/rules_docs.rs b/docs/codegen/src/rules_docs.rs index 3624dfb86..87eb1a224 100644 --- a/docs/codegen/src/rules_docs.rs +++ b/docs/codegen/src/rules_docs.rs @@ -36,7 +36,7 @@ pub fn generate_rules_docs(docs_dir: &Path) -> anyhow::Result<()> { for (rule, metadata) in rules { let content = generate_rule_doc(group, rule, metadata)?; let dashed_rule = Case::Kebab.convert(rule); - fs::write(rules_dir.join(format!("{}.md", dashed_rule)), content)?; + fs::write(rules_dir.join(format!("{dashed_rule}.md")), content)?; } } @@ -52,11 +52,7 @@ fn generate_rule_doc( writeln!(content, "# {rule}")?; - writeln!( - content, - "**Diagnostic Category: `lint/{}/{}`**", - group, rule - )?; + writeln!(content, "**Diagnostic Category: `lint/{group}/{rule}`**")?; let is_recommended = meta.recommended; @@ -128,7 +124,7 @@ fn write_how_to_configure( ); writeln!(content, "```json")?; - writeln!(content, "{}", json)?; + writeln!(content, "{json}")?; writeln!(content, "```")?; Ok(()) diff --git a/docs/codegen/src/rules_index.rs b/docs/codegen/src/rules_index.rs index 443c5c031..8d436cb7a 100644 --- a/docs/codegen/src/rules_index.rs +++ b/docs/codegen/src/rules_index.rs @@ -112,7 +112,7 @@ fn generate_rule_summary(docs: &'static str) -> io::Result { buffer.push_str(&text); } Event::Code(code) => { - buffer.push_str(format!("`{}`", code).as_str()); + buffer.push_str(format!("`{code}`").as_str()); } Event::End(TagEnd::Paragraph) => { return Ok(buffer); diff --git a/docs/codegen/src/utils.rs b/docs/codegen/src/utils.rs index 5e28d2c13..ecab6d6c2 100644 --- a/docs/codegen/src/utils.rs +++ b/docs/codegen/src/utils.rs @@ -8,8 +8,7 @@ pub(crate) fn replace_section( replacement: &str, ) -> String { let pattern = format!( - r"(\[//\]: # \(BEGIN {}\)\n)(?s).*?(\n\[//\]: # \(END {}\))", - section_identifier, section_identifier + r"(\[//\]: # \(BEGIN {section_identifier}\)\n)(?s).*?(\n\[//\]: # \(END {section_identifier}\))" ); let re = Regex::new(&pattern).unwrap(); diff --git a/xtask/codegen/src/generate_bindings.rs b/xtask/codegen/src/generate_bindings.rs index 4b66fd004..1c6ba3e82 100644 --- a/xtask/codegen/src/generate_bindings.rs +++ b/xtask/codegen/src/generate_bindings.rs @@ -196,7 +196,7 @@ pub fn generate_bindings(mode: Mode) -> Result<()> { items.extend(declarations.into_iter().map(|(decl, description)| { let mut export = make::token(T![export]); if let Some(description) = description { - let comment = format!("/**\n\t* {} \n\t */\n", description); + let comment = format!("/**\n\t* {description} \n\t */\n"); let trivia = vec![ (TriviaPieceKind::Newline, "\n"), (TriviaPieceKind::MultiLineComment, comment.as_str()), diff --git a/xtask/codegen/src/generate_new_analyser_rule.rs b/xtask/codegen/src/generate_new_analyser_rule.rs index 5730e96f2..f0f54b9c7 100644 --- a/xtask/codegen/src/generate_new_analyser_rule.rs +++ b/xtask/codegen/src/generate_new_analyser_rule.rs @@ -129,8 +129,7 @@ pub fn generate_new_analyser_rule( // We sort rules to reduce conflicts between contributions made in parallel. let rule_line = match category { Category::Lint => format!( - r#" "lint/{group}/{rule_name_camel}": "{}/latest/rules/{kebab_case_rule}","#, - PGLS_WEBSITE + r#" "lint/{group}/{rule_name_camel}": "{PGLS_WEBSITE}/latest/rules/{kebab_case_rule}","# ), }; let lint_start = match category {