levxyca / diciotech

Um dicionário tech para pessoas que querem aprender mais sobre termos técnicos dentro da tecnologia 📖
https://diciotech.netlify.app/
GNU General Public License v3.0
391 stars 69 forks source link

feat: adiciona uma Interface de Linha de Comando (CLI) para criar novos conceitos #112

Open rwietter opened 10 months ago

rwietter commented 10 months ago

Descrição

A principal adição deste PR é a funcionalidade de CLI. Com isso, os contribuidores também podem criar novos termos no projeto "diciotech" através da interface de linha de comando, executando o um comando de sua preferência npm run new, yarn new ou pnpm new.

[!NOTE]
Na issue #100, eu tinha comentado sobre usar apenas módulos nativos do Node, como o readline, mas como o projeto tende a crescer, resolvi usar a lib de CLI Clack. Após fazer build uma vez com webpack, basta executar com Node da mesma forma. Inclui o bundle final junto a este PR, para quem for contribuir não precisar instalar dependências e fazer build para executar.

  1. Na primeira etapa, configuramos o ambiente do projeto, incluindo a definição de dependências essenciais e a criação de scripts para compilar e executar a aplicação. Para gerenciar essas dependências e garantir a organização do projeto.

  2. Além disso, introduzimos o arquivo de configuração "tsconfig.json" para tornar o projeto compatível com TypeScript. Isso oferece a vantagem de tipagem estática e detecção de potenciais problemas durante a compilação.

  3. Para otimizar a organização e o empacotamento de ativos do projeto, adicionamos o Webpack, um bundler de módulos. Isso é essencial para gerenciar as dependências e criar bundles eficientes.

[!WARNING]
Gostaria de ajuda para testar em outros Sistemas Operacionais como Windows e Mac, afim de encontrar problemas se houver, pois testei apenas no Arch Linux.

Fixes #100

Tipo de mudança

Como isso foi testado?

Para executar a CLI, basta fazer fetch deste pr, ter o node>=18.17.1 instalado e executar com yarn run new ou npm run new ou pnpm run new. Executei os testes no Wezterm, e no terminal integrado do Vscode com o comando npm run new.

Configuração de Testes:

Checklist:

Screenshots

Executando a CLI

cli

Criando novo conceito

new

Arquivo de dados

data

netlify[bot] commented 10 months ago

Deploy Preview for diciotech ready!

Name Link
Latest commit 576319ce2f75769435b1f78c1f62032448e74fd0
Latest deploy log https://app.netlify.com/sites/diciotech/deploys/668208de9bec590008d3aec4
Deploy Preview https://deploy-preview-112--diciotech.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

levxyca commented 10 months ago

Sensacional @rwietter! Assim que puxar pra revisar, consigo testar no windows! Infelizmente no MAC vou ficar devendo! Mas se alguém da comunidade conseguir fiquem a vontade!

rwietter commented 10 months ago

Sensacional @rwietter! Assim que puxar pra revisar, consigo testar no windows! Infelizmente no MAC vou ficar devendo! Mas se alguém da comunidade conseguir fiquem a vontade!

Fiz algumas modificações gerais. Substitui o Enquirer pelo Clack, achei que ficou bem melhor a usabilidade e a CLI em si. O que acha ?

Agora eu criei um arquivo na raiz do projeto chamado "code" que é para colocar trechos de código caso haja, ali você já coloca de forma recuada e depois em conjunto com a issue #113 já irá aparecer o código formatado no card. No terminal não tem como escrever de forma recuada, teria que ser na mesma linha e dando espaçamento e quebra de linha manualmente, dessa forma acho que é mais simples e não atrapalha a CLI, visto que grande maioria dos conceitos não tem código.

Parte 1

https://github.com/levxyca/diciotech/assets/46854467/e8a533c0-dfe7-498c-876d-90817206d33a

Parte 2

https://github.com/levxyca/diciotech/assets/46854467/7e1a1d10-a28f-4d62-b5bf-57f0851355dd

Ops: removi o assignment sem querer.

levxyca commented 10 months ago

@rwietter isso ficou SENSACIONAL! Sério! 🥹 Vou tirar um tempo para revisar tudo e testar na minha máquina para ver como está fluindo.

Apesar disso, como não sou nenhuma expert em usabilidade, acho que o ideal vai ser abrir para a comunidade testar, e se tivermos sugestões e melhorias vamos implementando aos poucos!

george-gca commented 2 months ago

Tem alguma forma de adicionar uma nova tag usando a CLI? Ou pra isso ainda é necessário editar o arquivo manualmente? E acho que seria legal na CLI também ter a possibilidade de editar um termo existente. Imagina o seguinte caso: acabei de adicionar um termo, mas esqueci de adicionar uma tag por exemplo, ou pensei melhor e quero fazer uma mudança na definição.

rwietter commented 2 months ago

Tem alguma forma de adicionar uma nova tag usando a CLI? Ou pra isso ainda é necessário editar o arquivo manualmente? E acho que seria legal na CLI também ter a possibilidade de editar um termo existente. Imagina o seguinte caso: acabei de adicionar um termo, mas esqueci de adicionar uma tag por exemplo, ou pensei melhor e quero fazer uma mudança na definição.

Em relação a tag, não há opção para adicionar uma nova, pois o documento de contribuição (CONTRIBUTING) estabelece que a adição de uma tag requer a abertura de uma solicitação de alteração para que a comunidade possa avaliar a relevância da tag em questão e verificar se é justificada, evitando assim a criação de confusão e desordem.

Quanto às funcionalidades de edição ou exclusão de termos a partir da interface de linha de comando, eu acredito que é uma ideia meritória que pode ser implementada.

levxyca commented 2 months ago

Olá, pessoal 🚀 Testei a CLI no Windows aqui e curti DEMAIS! Seguem os prints dos testes: image image image

O único ponto que tenho é que quando fui selecionar a tag, a seleção estava meio bugada, mas não sei se é o meu terminal específicamente: image

// @rwietter

rwietter commented 2 months ago

Muito bom! @levxyca, a questão levantada refere-se à seleção da tag, certo? Adicionei recentemente uma documentação à CLI, que elucida o procedimento. Para a seleção das tags, tente utilizar a tecla Space e Enter para submit. Por favor, informe-me se o problema está relacionado a esse aspecto ou se se trata de outra dificuldade específica.

levxyca commented 2 months ago

@rwietter exatamente! o problema está relacionado a isso, eu consigo selecionar sim, o problema está no retorno visual, como no print, quando tento ir passando pelas tags pra selecionar, ele fica estranho, como se tivesse com várias selecionadas e isso dificulta entender qual eu estou de fato selecionando até que eu aperte space e descubra.