-
Notifications
You must be signed in to change notification settings - Fork 267
Description
Describe the bug
Chaining publish
and unpublish
commands changes their default behavior in relation to staging/production hosts.
Expected Behavior
Commands publish
and unpublish
should always default to staging when production_host
and staging_host
are defined under binary
in package.json.
Actual Behavior
When the commands publish
and unpublish
are executed by themselves they default to staging. However, if the command being executed is chained after another command (for example package publish
or info unpublish
) then the default reverts to binary.production_host
. As a result - accidental publishing/unpublishing is possible.
Steps to Reproduce
1) Prep package.json
Replace "host" with staging_host
and production_host
in package.json
Example:
"staging_host": "https://apm-appoptics-bindings-node-dev-staging.s3.us-east-1.amazonaws.com",
"production_host": "https://apm-appoptics-bindings-node-dev-production.s3.us-east-1.amazonaws.com",
2) Run Commands one after the other
node-pre-gyp package
node-pre-gyp publish
Results in: ✅
[node-pre-gyp-test-app1] published to https://apm-appoptics-bindings-node-dev-staging.s3.us-east-1.amazonaws.com/node-pre-gyp/node-pre-gyp-test-app1/v0.1.0/Release/
node-pre-gyp info
node-pre-gyp unpublish
Results in: ✅
[node-pre-gyp-test-app1] Success: removed https://apm-appoptics-bindings-node-dev-staging.s3.amazonaws.com/node-pre-gyp/node-pre-gyp-test-app1/v0.1.0/Release/node-v83-darwin-x64.tar.gz
3) Run Chained Commands
node-pre-gyp package publish
Results in: ❌
[node-pre-gyp-test-app1] published to https://apm-appoptics-bindings-node-dev-production.s3.us-east-1.amazonaws.com/node-pre-gyp/node-pre-gyp-test-app1/v0.1.0/Release/
node-pre-gyp info unpublish
Results in: ❌
[node-pre-gyp-test-app1] Success: removed https://apm-appoptics-bindings-node-dev-production.s3.amazonaws.com/node-pre-gyp/node-pre-gyp-test-app1/v0.1.0/Release/node-v83-darwin-x64.tar.gz
Root Cause
When chained commands are executed, the first command in the chain will raise the binaryHostSet
flag. Subsequent publish
or unpublish
will trigger the early return. Due to the early return, the host will not be configured correctly resulting in the bug described above.