Laboratório do Portal do Terminal
[!TIP] Baixe o ZIP do aprendiz ou copie este laboratório inteiro para uma pasta não usada. Leia primeiro a configuração e as etapas opcionais do GitHub.
Antes de executar qualquer coisa
| Item | Contrato |
|---|---|
| Runtime | Node 24; as integrações ao vivo são separadas |
| Arquivos para inspecionar | starter/command.js, verify.js |
| Diretório do verificador | Raiz do kit extraído: node verify.js; em starter/: node ../verify.js |
| Estado inicial | O starter inacabado é rejeitado; preserve o diagnóstico |
| Evidência de conclusão | As solicitações válidas retornam a ação e o destino; cada forma inválida enviada é rejeitada. |
Conceito em prática: O mesmo nome de arquivo relativo significa algo diferente em outro diretório de trabalho. Um contrato de comando seguro define tanto a ação permitida quanto onde o destino é resolvido.
Construa um pequeno analisador de argumentos para uma superfície de terminal segura e determinística.
Missão
Implemente parseCommand em starter/command.js. Aceite somente:
inspect <relative-path>
verify <relative-path>
Retorne { action, target }. Rejeite argumentos ausentes ou extras, caminhos absolutos, travessia para diretórios superiores, metacaracteres do shell e ações sem suporte.
Execute node verify.js.
Execução guiada
- Execute o verificador intacto e registre o estado inicial esperado.
- Peça uma explicação fundamentada na fonte do código e nas verificações relevantes.
- Planeje: defina a saída de parseCommand para as duas ações permitidas. Exija exatamente um destino relativo e rejeite caminhos absolutos, traversal, aspas e operadores de shell como strings não confiáveis.
- Implemente apenas o recorte aprovado e execute novamente o mesmo verificador.
- Aceite temporariamente um argumento extra e confirme que o caso de entrada inválida falha. Restaure o analisador estrito.
- Revise o diff e registre a limitação: o exercício do analisador não executa nenhum comando de shell. Usar o Copilot CLI real é um fluxo ao vivo separado, com sua própria configuração e permissões.
Conclusão e redefinição segura
- O comportamento exigido e seu caso negativo têm evidência observada.
- O resultado distingue a verificação local do comportamento ao vivo do host/runtime.
- Nenhuma credencial, arquivo não relacionado ou serviço foi alterado.
- A evidência está salva antes de redefinir o starter copiado.
Use uma nova extração para outra tentativa, ou restaure apenas os arquivos nomeados a partir de uma linha de base Git criada nesta cópia. Nunca aplique um comando de redefinição da raiz do currículo a partir de um projeto diferente.
Continue com a aventura e a rubrica.