Requisitos - Korzre/terminal-jsh GitHub Wiki

Requisitos

Este documento transcreve a coleta de requisitos do terminal

Implementar o método lerComando()

Implementar o método executarComando() dando sequencia as instruções dentro dele

  • encerrar: termina o programa retornando 0 (significa que terminou com sucesso, sem erros);

  • relogio: exibe a data e a hora atual do sistema. Implementar esta ação no método exibirRelogio();

  • la: lista os nomes de todos os arquivos e diretórios do atual diretório de trabalho, um em cada linha. Implementar esta ação no método escreverListaArquivos().

  • cd: cria um novo diretório com nome definido pelo primeiro argumento em ComandoPrompt::getArgumentos. Este diretório é colocado no diretório atual de trabalho. Implementar esta ação no método criarNovoDiretorio;

  • ad: apaga o diretório especificado pelo primeiro argumento em ComandoPrompt::getArgumentos. Implementar esta ação no método apagarDiretorio;

  • mdt: troca o atual diretório de trabalho pelo especificado pelo primeiro argumento em ComandoPrompt::getArgumentos. Implementar esta ação no método mudarDiretorioTrabalho();

Implementar o método executarPrograma()

O nosso shell deve ser capaz de executar comandos de terceiros, ou seja, outros programas instalados no computador. Essa funcionalidade é cumprida pelo método executarPrograma(), que é chamada por executarComando() caso o comando não seja nenhum dos pré-definidos pelos requisitos. Para ficar mais claro, siga a sequência:

  1. executarComando() recebe o comando e argumentos digitados pelo usuário;

  2. executarComando() verifica se o comando digitado se refere a alguma das funcionalidades embutidas no shell;

  3. Se comando não for nenhum dos embutidos, executarComando() repassa o comando e argumentos para executarPrograma();

  4. executarPrograma() obtém uma lista com todos os arquivos do diretório de trabalho atual e verifica se algum deles tem o mesmo nome do comando. Se não houver, o shell indica que o comando ou programa não existe e abre o prompt para o usuário;

  5. Se houver um arquivo com o mesmo nome de comando, executarPrograma verifica se esse arquivo tem permissão de execução. Se não houver, o terminal indica que o arquivo não tem permissão para execução;

  6. Se o arquivo tiver permissão, executarPrograma() cria um novo processo, que inicia execução enquanto o processo do shell espera por seu término para prosseguir para o próximo comando.

  7. Quando o processo lançado se encerrar, o shell volta ao prompt, lançando uma mensagem indicando erro na execução do processo filho caso seu valor de retorno seja diferente de 0.