Back-end project of roadmap.sh made with Node.js.
Clone o projeto com o seguinte comando: git clone https://github.com/Zafkiel45/summer-2024.git
ou baixe os arquivos e execute ele em seu terminal.
Para executar o script, digite em seu terminalnode program.cjs [comandos]
. Caso queira algo mais "light" menos argumentativo, você pode adicionar em suas variáveis de ambiente no seu sistema operacional o arquivo .bath
para uma maior facilidade.
O arquivo .bath
é completamente opcional, e apenas uma feature extra. Todo o script dele esta na raiz do repositório e pode ser analisado por qualquer um. Além disso, nada impede de você altera-lo e simplesmente criar o seu próprio da forma que quiser.
As tarefas são organizadas em listas, sendo 4 delas padrões (já vem por padrão, mas você pode deleta-las).
[
{
daily: [
{
"name": "",
"id": 4,
"status": "todo",
"createdAt": "[MM][DD][YYYY]",
"updateAt": "[MM][DD][YYYY]",
"type": "",
"finishAt": "",
"streak": 0
}
],
study: [],
entreteiment: [],
revision: [],
}
]
Por padrão, ao executar o script, criará um arquivo .json
no mesmo local que o program.cjs
e também uma pasta com um arquivo backup
que falarei mais sobre no final desta documentação.
A estrutura para adicionar e realizar outras operações, em geral, é esta, mas com algumas nuances entre os comandos. Explicarei cada comando em detalhes logo abaixo.
task daily add "my daily task"
Como qualquer projeto do mesmo ramo, você pode adicionar, deletar, atualizar e tudo mais. Alguns comandos ainda estão sendo aperfeiçoados. O projeto tenta cobrir todas as eventuais necessidades de ações. Se você apenas quiser fazer coisas simples, como adicionar e apagar tarefas, é possível. Se quiser editar, atualizar, determinar uma data de conclusão e outras coisas, também é possível.
Vale salientar que os comandos apenas afetam a lista específicada, então não precisa se preocupar sobre as outras tarefas. Se algum comando alterar além de seus limites, será explicitamente avisado.
node program.cjs daily add name-of-task
exemplo com dados reais:
node program.cjs study add drink-water
As aspas são opcionais, mas é a única forma de nomear tarefas com espaço sem resultar em comportamentos inesperados:
node program.cjs daily add 'Drink water'
Se algum erro ocorrer, o programa alertará no console. A estrutura desse comando é simples, você precisa específicar qual é a lista de tarefa, neste caso study
. Logo em seguida determinar qual comando, neste caso add
e o nome da tarefa, neste caso Drink Water
.
Isto atualizará o nome de uma task na lista que você determinar.
node program.cjs entretenment update 1 'my-new-name'
Se algum erro ocorrer, o programa alertará no console. A estrutura desse comando é simples, você precisa específicar qual é a lista de tarefa, neste caso entretenment
. Logo em seguida determinar qual comando, neste caso update
, o ID da tarefa que neste caso é 1
, o novo nome da tarefa my-new-name
.
estrutura semelhante com a do update
, mas com uma pequena diferença e papel. O delete delete uma tarefa específica determina pelo o ID
. O ID
da tarefa nunca é o mesmo, então não precisa se preocupar em conflitos. No momento não existe uma "lixeira", mas estou analisando a possibilidade.
node program.cjs revision delete-task 5
Se algum erro ocorrer, o programa alertará no console. Você precisa específicar qual é a lista de tarefa, neste caso revision
. Logo em seguida determinar qual comando, neste caso delete-task
, o ID da tarefa que neste caso é 5
.
Para listar todas as tarefas de uma lista específica, digite list
, isto mostrará uma tabela com todas as informações atuais da tarefas. Além disso, esta é a única forma de visualiza-las para se orientar, como por exemplo, para se lembrar do ID
específico da tarefa, é necessário lista-las antes.
node program.cjs daily list
Se algum erro ocorrer, o programa alertará no console. Você precisa específicar qual é a lista de tarefa, neste caso daily
. Logo em seguida determinar qual comando, neste caso list
.
Para listar tarefas com um status
específico, como todo
, done
e in-progress
, basta adiciona-las logo em seguinta, como nos exemplos abaixo.
Exemplos:
node program.cjs study list done
Acima listará todas as tarefas com o status done
.
node program.cjs study list in-progress
Acima listará todas as tarefas com o status in-progress
.
node program.cjs study list todo
Acima listará todas as tarefas com o status todo
.
Usado para atualizar o status
específico da tarefa. A estrutura é bem simples, mark-
seguido com o status
e o ID
da tarefa, como mostrado abaixo.
node program.cjs entreteinment mark-done 1
Isto mudará o status atual para done
da tarefa com ID=1
em entreteinment
.
node program.cjs entertaimnent mark-in-progress 10
Isto mudará o status atual para in-progress
da tarefa com ID=10
em entreteinment
.
node program.cjs entertaimnent mark-todo 6
Isto mudará o status atual para todo
da tarefa com ID=6
em entreteinment
.
Isto excluíra todas as tarefas de uma determina lista. NÃO APAGARÁ NADA ALÉM DAS TAREFAS DA LISTA ESPECÍFICADO.
node program.cjs study delete-all
Isto apagará todas as tarefas de study
.
Marca todas as tarefas de uma lista como: done
, todo
ou in-progress
node program.cjs entertainment mark-all-done
Marcará todas as tarefas como done
em entertainment
.
node program.cjs entertainment mark-all-todo
Marcará todas as tarefas como todo
em entertainment
.
node program.cjs entertainment mark-all-in-progress
Marcará todas as tarefas como in-progress
em entertainment
.
Muda o tipo de uma tarefa específica para a string
passada. Muito útil para organizar tarefas e classifca-las. No exemplo abaixo, eu classifquei uma tarefa como node
.
node program.cjs study type 5 "node"
Mudará a tarefa de study
com o id=5
para node
.
Isto adicionará ou mudará a data de conclusão de uma tarefa, meramente ilustrativa no momento, apenas para o usuário ter uma noção sobre quando realiza-la. Não irá mostrar nenhuma notificação no momento e nem nada do tipo (até agora).
A data é formatada para o modelo americano, então tem que ter a seguinte formatação: [MM][DD][YYYY]
node program.cjs study data-conclusion 2 "02/12/2024"
Altera a data de conlusão da tarefa de study
com o id=2
para 02/12/2024
- dia 12 de fevereiro de 2024
Este comando é um comando especial pois tem uma estrutura um tanto diferente dos outros comandos. Este comando tem como principal utilidade alterar a estrutura de suas tarefas, adicionando mais listas ou removendo. Considere os seguintes exemplos:
task configurate-task-field add-field
Ao apertar enter
em seu teclado, você precisará passa o nome da nova lista formatado em camelCase
para criar uma nova lista.
node program.cjs configurate-task-field delete-field
Ao apertar enter
em seu teclado, você precisará passa o nome da nova lista formatado em camelCase
para deletar um campo.
OBS: Não é possível deletar todos os campos, ao menos 1 restará e se você tentar apagar o último item, lançará um erro. Isto é intencional para preservar a estutura do arquivo .json
.
Faz o mesmo que o date-conclusion
, mas para todas as tarefas de uma lista.
node program.cjs study date-conclusion-all "05/02/2024"
Este também segue o padrão americano, sendo [MM][DD][YYYY]
Faz o mesmo que o type
, mas para todas as tarefas de uma lista.
node program.cjs study type-all 'node'
Listará todos os comandos existentes no programa atualmente, com breve descrições. No momento somente esta documentação é uma forma completa de se orientar caso necessário.
node program.cjs help all
Nas versões mais recentes > v1.2 o backup não é mais realizado automaticamente devido a erros. Antigamente, se você apagasse sem querer uma lista, automaticamente um backup da lista apagada seria feito, perdendo seu significado.
Agora há um comando manual exclusivo para ele, que, uma vez executado, irá fazer uma cópia de seu tasks.json
para a pasta backup
dentro do mesmo diretório, com o nome de backup.json
.
É importante resaltar que, se por ventura você apagar o tasks.json
e quiser recupera-la ao susbtitituir os arquivos perdidos pelo backup, é necessário que você mova o arquivo de backup.json
para o mesmo diretório de program.cjs
e susbtitua o nome para tasks.json
.
node program.cjs backup run
irá realizar o backup.
As notificação chegam nas versões > v1.2 e tem como intuito facilitar a procura pela as tarefas que precisa realizar hoje.
Uma vez que você digite o comando abaixo, será filtrado todas as tarefas que tem finishAt
marcado para a data atual e armazenado dentro de um array
separado.
Consule data-conclusion comando
aqui na documentação para ter um maior entendimento.
node program.cjs notification show
Com o .bath
file, você consegue encurtar a forma que o script é chamado, assim aprimorando a experiência. Se você optar por adicionr o task.bat
a suas variavéis de ambiente em seu sistema operacional, ao invés de invoca-lo como: node program.cjs [comandos]
, será como da forma abaixo.
task study add "new task"
isto permite que você oculte a parte: node program.cjs
e se concentre apenas nos comandos.