Feito em cima do Shelljs e inquirer
/* TODO: finalizar descrição */
$ duis [PATH/TO/CONFIG-FILE] <PATH/TO/TRAB-FILE>
|
|
relativo ao diretĂłrĂo do "aluno" (AKA working dir; onde está o `.git`)
Exemplo de árvore do diretório a ser trabalhado
.
├── duis.questions.js
├── duis.config.js
├── Turma1
│ ├── __tests__
│ │ └── TRAB1.test.js
│  ├── nick-aluno-a # git repo
│ │  ├── TRAB1
│ │ │  └── index.html ## or `index.php`
│ │  ├── TRAB2
│ │  └── # ...
│  ├── nick-aluno-b
│ │  └── # ...
│  └── #...
└── Turma2
  └── #...Exemplo do arquivo de configuração
Exemplificando o processo de execução
Iniciar processo com $ duis . TRAB1
- Carregar as configurações expostas no arquivo
duis.config.jsdo diretĂłrio corrente (se nĂŁo existir: exit 1) - Fazer as perguntas definidas em
CONFIG#startQuestions, para adicionar mais valores ao estado inicial - Criar o diretĂłrio definido em
CONFIG#lookupDirPathMask, se ele já não existir - Para cada diretório resolvido da junção de
CONFIG#workingdirParentDirPathMask(renderizado) e<PATH/TO/TRAB-FILE>(eg.TRAB1), tratá-lo como working dir e fazer:- Entrar no diretório "root" do working dir corrente (eg.
./Turma1/nick-aluno-a) - Executar os comandos definidos em
CONFIG#commandsForEachRootDir.onEnter(perguntando antes de executar cada, seCONFIG#safeModefortrue) - Entrar no diretĂłrio working dir corrente (eg.
./Turma1/nick-aluno-a/TRAB1) - Recuperar o id do Ăşltimo commit no diretĂłrio working dir, e fazer:
- Se o working dir tiver uma entrada para
<PATH/TO/TRAB-FILE>no arquivo de lookup corrente (eg../Turma1/.duis.lookup/nick-aluno-a.json) e o id deste for igual a este commit, então esse "trabalho" não foi atualizado; pular essa iteração - Senão, continuar o processo
- Se o working dir tiver uma entrada para
- Se
CONFIG#serverPortestiver definido, entĂŁo:- Criar um servidor PHP no working dir
- Abrir o navegador definido em
CONFIG#browserna raiz do server local
- SenĂŁo, abrir o navegador em working dir
- Se existir o arquivo de teste associado ao "trabalho" corrente, entĂŁo:
- Perguntar se deseja executar o comando definido em
CONFIG#test.commandToRun(eg.testcafe -sf chrome:headless ./Turma1/__tests__/TRAB1.test.js) - Executar o comando para (teoricamente) executar os testes
- Perguntar se deseja executar o comando definido em
- Fazer as perguntas definidas no
CONFIG#workingdirQuestions - Esperar a resposta da pergunta "Finalizar avaliação de
<rootName>?"- Atualizar o arquivo de lookup correspondente
- Parar o servidor (se iniciado)
- Executar os comandos definidos em
CONFIG#commandsForEachRootDir.onBeforeLeave(perguntando antes de executar cada, seCONFIG#safeModefortrue)
- Entrar no diretĂłrio "root" do working dir corrente (eg.
- Esc para fechar o programa (como o ctrl+c)
- Em perguntas que fornecem um tab suggestions, as sugestões são de nomes lidos de alguma fonte. Ex: As sugestões ao definir o identificador do trabalho no arquivo de lookup são de identificadores em uso
- As respostas ficam em destaque para indicar que se referem a algo já definido (no contexto da pergunta)
o nome do arquivo deve ser o mesmo do diretĂłrio git em que o
working direstá
{
"<TRABNAME_CORRIGIDO>": {
"_id": "<TRABNAME_CORRIGIDO_COMMIT_ID>", // commit que gerou os `prompts` abaixo
"extra": { // retornado pela aplicação da função `CONFIG#lookupAttachExtra` sobre as respostas de `CONFIG#workingdirQuestions`
},
"prompts": [ // perguntas e respostas das questões definidas em `CONFIG#workingdirQuestions`
{
"q": "<QUESTION_NAME>",
"a": "<ANSWER>"
},
// ...
]
}
// ...
}