Chaining publish and unpublish Commands Changes Their Default Behavior
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- JavaScript
- Estrelas
- 1.2k
- Forks
- 271
- Merge médio
- 23h 40min
- PRs com merge (30d)
- 2
Descrição
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.
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece em lib/node-pre-gyp.js, no tratamento de binaryHostSet por volta das linhas 247 e 275, e depois reproduza o problema com os valores de staging_host e production_host de package.json mostrados. Verifique a correção tanto com comandos publish/unpublish independentes quanto encadeados; os comandos encadeados devem usar staging por padrão em vez de production.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- javascript
- Domínio
- cli
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 48/100