#!/bin/bash set -e ACTION="$1" AUTH_URLS="$2" API_KEYS="$3" if [ "$ACTION" == "add" ]; then # Parse newline-separated URLs and tokens into arrays (preserves empty lines) mapfile -t URLS <<< "$AUTH_URLS" mapfile -t KEYS <<< "$API_KEYS" # Verify arrays have matching lengths if [ ${#URLS[@]} -ne ${#KEYS[@]} ]; then echo "Error: Number of registries (${#URLS[@]}) does not match number of apiKeys (${#KEYS[@]})" exit 1 fi # Configure authentication for each registry for i in "${!URLS[@]}"; do URL="${URLS[$i]}" KEY="${KEYS[$i]}" # Skip empty registry entries if [ -z "$URL" ]; then continue fi # Skip registries that don't need authentication if [ -z "$KEY" ] || [ "$KEY" == "none" ]; then echo "Skipping authentication for: $URL (no API key provided)" continue fi # Remove protocol from URL for npm config REGISTRY_PATH=$(echo "$URL" | sed -E 's|https?://||') echo "Configuring authentication for: $URL" npm config set --location=project "//${REGISTRY_PATH}:_authToken" "$KEY" done elif [ "$ACTION" == "remove" ]; then # Clean up project .npmrc rm -f .npmrc echo "Removed npm authentication configuration" else echo "Error: Invalid action '$ACTION'. Use 'add' or 'remove'" exit 1 fi