diff --git a/npm/npm-push/action.yaml b/npm/npm-push/action.yaml index 5b5aceb..6494136 100644 --- a/npm/npm-push/action.yaml +++ b/npm/npm-push/action.yaml @@ -4,6 +4,10 @@ inputs: tgz: description: "Path to the tarball file to publish." required: true + workingDirectory: + description: "Working directory for the publish operation." + required: false + default: "." registry: description: "NPM registry URL." required: false @@ -33,24 +37,32 @@ runs: # Trim whitespace TGZ_PATH=$(echo "$TGZ_PATH" | xargs) - if [[ ! "$TGZ_PATH" =~ ^[./~] ]]; then - echo "Path does not start with . / or ~, adding ./ prefix" + if [[ ! "$TGZ_PATH" =~ ^(\./|/|~) ]]; then + echo "Path does not start with ./ / or ~, adding ./ prefix" TGZ_PATH="./$TGZ_PATH" fi + # Verify the tarball exists + if [ ! -f "$TGZ_PATH" ]; then + echo "Error: Tarball not found at $TGZ_PATH (working directory: $(pwd))" + exit 1 + fi + # Configure npm authentication for the registry (scoped to project) REGISTRY_PATH=$(echo "${{ inputs.registry }}" | sed -E 's|https?://||') npm config set --location=project registry "${{ inputs.registry }}" npm config set --location=project "//${REGISTRY_PATH}:_authToken" "${{ inputs.apiKey }}" echo "Publishing $TGZ_PATH to ${{ inputs.registry }}" - npm publish --location=project "$TGZ_PATH" --access ${{ inputs.access }} + npm publish "$TGZ_PATH" --access ${{ inputs.access }} echo "Package published successfully" + working-directory: ${{ inputs.workingDirectory }} shell: bash - name: "Clean up npm authentication" if: always() run: | # Clean up project .npmrc in case of early exit rm -f .npmrc + working-directory: ${{ inputs.workingDirectory }} shell: bash \ No newline at end of file