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:
-
executarComando() recebe o comando e argumentos digitados pelo usuário;
-
executarComando() verifica se o comando digitado se refere a alguma das funcionalidades embutidas no shell;
-
Se comando não for nenhum dos embutidos, executarComando() repassa o comando e argumentos para executarPrograma();
-
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;
-
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;
-
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.
-
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.