Skip to content

Conversation

@littlesmilelove
Copy link

@littlesmilelove littlesmilelove commented Dec 26, 2025

convert shell scripts to Node.js for cross-platform compatibility (windows)

Summary by Sourcery

Replace shell-based packaging scripts with Node.js equivalents to improve cross-platform compatibility for the packaging workflow.

New Features:

  • Add a Node.js prepackage script that backs up README.md and rewrites the mentioned badge SVG URL to a PNG asset before packaging.
  • Add a Node.js postpackage script that restores README.md from its backup after packaging.

Enhancements:

  • Update package.json packaging scripts to invoke the new Node.js pre- and post-package scripts instead of inline shell commands.

@sourcery-ai
Copy link

sourcery-ai bot commented Dec 26, 2025

Reviewer's Guide

Replaces shell-based pre/post packaging logic with equivalent Node.js scripts to make the packaging workflow cross-platform while preserving README backup and badge URL rewriting behavior.

Sequence diagram for Node-based prepackage and postpackage workflow

sequenceDiagram
    actor Developer
    participant PNPM as pnpm
    participant PreScript as prepackage_mjs
    participant Vsce as vsce
    participant PostScript as postpackage_mjs
    participant FS as filesystem

    Developer->>PNPM: run package
    PNPM->>PreScript: run prepackage script
    PreScript->>FS: check README_md_bak exists
    FS-->>PreScript: exists or not
    PreScript->>FS: delete README_md_bak if exists
    PreScript->>FS: copy README_md to README_md_bak
    PreScript->>FS: read README_md
    PreScript->>FS: write README_md with SVG_URL replaced by PNG_PATH
    PreScript-->>PNPM: exit success

    PNPM->>Vsce: run vsce package
    Vsce-->>PNPM: create vsix package

    PNPM->>PostScript: run postpackage script
    PostScript->>FS: check README_md_bak exists
    FS-->>PostScript: exists or not
    PostScript->>FS: copy README_md_bak to README_md
    PostScript->>FS: delete README_md_bak
    PostScript-->>PNPM: exit success
    PNPM-->>Developer: packaging complete
Loading

Flow diagram for updated packaging npm scripts using Node js

flowchart TD
    A[Developer runs pnpm run package] --> B[prepackage script runs node prepackage_mjs]
    B --> C[Delete existing README_md_bak if present]
    C --> D[Copy README_md to README_md_bak]
    D --> E[Replace SVG badge URL with PNG path in README_md]
    E --> F[Run vsce package]
    F --> G[postpackage script runs node postpackage_mjs]
    G --> H[If README_md_bak exists copy to README_md]
    H --> I[Delete README_md_bak]
    I --> J[Packaging complete]
Loading

File-Level Changes

Change Details Files
Convert prepackage shell pipeline to a Node.js script that backs up README.md and rewrites the badge URL before packaging.
  • Replace the prepackage npm script with a call to a new Node.js entry point.
  • Implement filesystem-based backup of README.md to README.md.bak, deleting any existing backup first.
  • Read README.md contents and replace the awesome.re SVG badge URL with a local PNG asset using string replacement, then write the updated file back.
package.json
prepackage.mjs
Convert postpackage shell command to a Node.js script that restores README.md from backup after packaging.
  • Replace the postpackage npm script with a call to a new Node.js entry point.
  • In the new script, copy README.md.bak back to README.md if the backup exists, then remove the backup file.
  • Log a confirmation message when README.md is restored.
package.json
postpackage.mjs

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • In prepackage.mjs, consider handling the case where README.md does not exist before calling copyFileSync/readFileSync so the script fails with a clearer message or exits gracefully.
  • To avoid relying on relatively new Node APIs, you might want to replace content.replaceAll(...) with a more broadly compatible content.split(...).join(...) or a global regex replace.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In `prepackage.mjs`, consider handling the case where `README.md` does not exist before calling `copyFileSync`/`readFileSync` so the script fails with a clearer message or exits gracefully.
- To avoid relying on relatively new Node APIs, you might want to replace `content.replaceAll(...)` with a more broadly compatible `content.split(...).join(...)` or a global regex replace.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant