diff --git a/README.md b/README.md index d72003b0..c73c8a21 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ As with most Node projects, major development scripts can be found in the `packa #### Dependencies -The build toolchain requires `npm` and `jq` to be installed. You can use the `scripts/setup-dev.sh` script to install these prerequisites. +The build toolchain requires `npm` to be installed. You can install it using `scripts/setup-dev.sh`. #### Enabling Sandboxing diff --git a/package-lock.json b/package-lock.json index e7ca807f..0c3d8427 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "globals": "^16.0.0", + "json": "^11.0.0", "lodash": "^4.17.21", "memfs": "^4.17.2", "prettier": "^3.5.3", @@ -5920,6 +5921,18 @@ } } }, + "node_modules/json": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/json/-/json-11.0.0.tgz", + "integrity": "sha512-N/ITv3Yw9Za8cGxuQqSqrq6RHnlaHWZkAFavcfpH/R52522c26EbihMxnY7A1chxfXJ4d+cEFIsyTgfi9GihrA==", + "dev": true, + "bin": { + "json": "lib/json.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", diff --git a/package.json b/package.json index 33cb916a..d9037bbb 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "prettier": "^3.5.3", "react-devtools-core": "^4.28.5", "typescript-eslint": "^8.30.1", - "yargs": "^17.7.2" + "yargs": "^17.7.2", + "json": "^11.0.0" } } diff --git a/scripts/sandbox_command.sh b/scripts/sandbox_command.sh index 61dd3178..7c140c61 100755 --- a/scripts/sandbox_command.sh +++ b/scripts/sandbox_command.sh @@ -32,11 +32,11 @@ done shift $((OPTIND - 1)) # if GEMINI_SANDBOX is not set, see if it is set in user settings -# note it can be string or boolean, and if missing jq will return null +# note it can be string or boolean, and if missing `npx json` will return empty string USER_SETTINGS_FILE="$HOME/.gemini/settings.json" if [ -z "${GEMINI_SANDBOX:-}" ] && [ -f "$USER_SETTINGS_FILE" ]; then - USER_SANDBOX_SETTING=$(sed -e 's/\/\/.*//' -e 's/\/\*.*\*\///g' -e '/^[[:space:]]*\/\//d' "$USER_SETTINGS_FILE" | jq -r '.sandbox') - if [ "$USER_SANDBOX_SETTING" != null ]; then + USER_SANDBOX_SETTING=$(sed -e 's/\/\/.*//' -e 's/\/\*.*\*\///g' -e '/^[[:space:]]*\/\//d' "$USER_SETTINGS_FILE" | npx json 'sandbox') + if [ -n "$USER_SANDBOX_SETTING" ]; then GEMINI_SANDBOX=$USER_SANDBOX_SETTING fi fi diff --git a/scripts/setup-dev.sh b/scripts/setup-dev.sh index f8d0bf13..de2ae336 100755 --- a/scripts/setup-dev.sh +++ b/scripts/setup-dev.sh @@ -16,8 +16,7 @@ set -euo pipefail # Check if npm is installed -if ! command -v npm &> /dev/null -then +if ! command -v npm &>/dev/null; then echo "npm not found. Installing npm via nvm..." # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash @@ -26,19 +25,10 @@ then # Download and install Node.js: nvm install 22 # Verify the Node.js version: - node -v # Should print "v22.15.0". + node -v # Should print "v22.15.0". nvm current # Should print "v22.15.0". # Verify npm version: npm -v # Should print "10.9.2". fi -# Check if jq is installed -if ! command -v jq &> /dev/null -then - echo "jq not found. Installing jq..." - # This assumes a Debian/Ubuntu based system. Adjust for other distributions. - sudo apt-get update - sudo apt-get install -y jq -fi - echo "Development environment setup complete."