Skip to content

2.x bids-validator#717

Open
bpinsard wants to merge 1 commit intoReproNim:masterfrom
bpinsard:bids-validator-deno
Open

2.x bids-validator#717
bpinsard wants to merge 1 commit intoReproNim:masterfrom
bpinsard:bids-validator-deno

Conversation

@bpinsard
Copy link
Copy Markdown

@bpinsard bpinsard commented Mar 11, 2026

Attempt at modifying the template of bids-validator for newer version using deno.

addresses #715

@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request updates the bids-validator Neurodocker template to support newer versions, specifically 2.x, by adapting the installation method. It introduces a conditional logic that allows older 1.x versions to continue using Node.js, while 2.x versions are now installed and run using Deno, streamlining the process for modern bids-validator releases.

Highlights

  • New Version Support: Introduced support for bids-validator version 2.4.1, expanding the range of available validator versions.
  • Conditional Installation Logic: Implemented conditional installation instructions to differentiate between bids-validator 1.x (Node.js-based) and 2.x (Deno-based) versions.
  • Deno-based Installation for 2.x: Migrated the installation process for bids-validator 2.x to utilize Deno, including downloading, building, and setting up the Deno runtime for execution.
  • New Dependencies: Added 'jq' and 'unzip' as system dependencies to facilitate the Deno-based installation workflow for bids-validator 2.x.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • neurodocker/templates/bids_validator.yaml
    • Added bids-validator version 2.4.1 to the list of available versions.
    • Modified the installation instructions to include a conditional block for bids-validator versions, installing Node.js for 1.x and Deno for 2.x.
    • Included jq and unzip as required packages for the Deno-based installation of bids-validator 2.x.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request updates the bids-validator template to support version 2.x, which uses Deno. The changes introduce a conditional installation path based on the major version. My review focuses on improving the robustness and correctness of the new installation script. I've identified a potential issue with the version detection logic that could fail for future releases, pointed out an unnecessary dependency, and suggested several improvements to the Deno installation script for better safety and correctness.

if [ ! -z `which node` ] ; then \
echo "node is installed, skipping its install." ; \
else \
{%- if self.version[0] == '1' %} \
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The version check self.version[0] == '1' is not robust. It will incorrectly handle major versions 10 and above (e.g., '10.0.0'). A more reliable approach is to parse the major version number and compare it as an integer.

        {%- if self.version.split('.')[0] | int < 2 %} \

Comment on lines +58 to +61
cp dist/validator/bids-validator.js /usr/bin/
echo 'deno -A /usr/bin//bids-validator.js $@' > /usr/bin/bids-validator
chmod +x /usr/bin/bids-validator
rm -Rf $PWD
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

This part of the script can be improved for robustness and correctness:

  1. The path in the wrapper script contains a double slash (//). This should be corrected to a single slash.
  2. The $@ variable in the wrapper script should be quoted ("$@") to correctly handle arguments with spaces.
  3. Using rm -Rf $PWD is risky. A safer pattern is to change to the parent directory and then remove the build directory.
  4. The cp destination can be made more explicit by including the filename.
          cp dist/validator/bids-validator.js /usr/bin/bids-validator.js
          echo 'deno -A /usr/bin/bids-validator.js "$@"' > /usr/bin/bids-validator
          chmod +x /usr/bin/bids-validator
          cd .. && rm -rf "bids-validator-{{ self.version }}"

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