Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 47 commits into
base: main
Choose a base branch
from

Conversation

rwietter
Copy link
Contributor

@rwietter rwietter commented Oct 20, 2023

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

  • Bug fix (non-breaking change)
  • New feature (non-breaking change)
  • Breaking change (fix ou feature que faria com que a funcionalidade existente não funcionasse conforme o esperado)
  • Esta alteração requer uma atualização da documentação

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:

  • OS: Arch Linux x86_64 - Kernel 6.5.3-arch1-1
  • Shell: ZSH | Bash
  • Hardware: Intel i5-7400 (4) @ 3.500GHz 12G
  • Framework: node>=18.17.1

Checklist:

  • Meu código segue as diretrizes de estilo deste projeto
  • Realizei uma auto-revisão do meu próprio código
  • Comentei meu código, principalmente em áreas difíceis de entender
  • Fiz alterações correspondentes na documentação
  • Minhas alterações não geram novos warnings
  • Adicionei testes que provam que minha correção é eficaz ou que meu recurso funciona
  • Testes de unidade novos e existentes passam localmente com minhas alterações
  • Quaisquer alterações dependentes foram mescladas
  • Verifiquei meu código e corrigi quaisquer erros ortográficos

Screenshots

Executando a CLI

cli

Criando novo conceito

new

Arquivo de dados

data

* upstream/main: (25 commits)
  style: Compilando o arquivo sass para css
  refactor: atualizando arquivo script.js com nome novo da imagem
  refactor: mudando o nome da imagem de resultados não encontrados
  fix: Update assets/js/script.js
  Remove duplicate Mobile First term and rewrite him
  style: corrigindo a grafia do flex-direction: column
  style: configurando estilo para a mensagem de erro
  refactor: modificando a mensagem de erro
  refactor: script.js atualizado incluindo mensagem de termo não encontrado
  docs: Mudança do screenshot do README.md
  adicionando novos termos técnicos ao diciotech
  Melhorando conceitos de React, componentes e propriedades
  fix: removendo duplicados
  style: beautify json
  feat: adiciona termo/conceito 'cache'
  Add React, componentes e propriedades
  feat: removido tag 'back-end' do termo jQuery
  feat: add novos termos
  bugfix: ajuste na tag duplicada backend
  chore: adicionado variáveis com várias tonalidades da cor primária roxa
  ...
@netlify
Copy link

netlify bot commented Oct 20, 2023

Deploy Preview for diciotech ready!

Name Link
🔨 Latest commit 576319c
🔍 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.

@rwietter rwietter changed the title feat: configuração inicial e integração da Interface de Linha de Comando (CLI) para o projeto feat: adiciona uma Interface de Linha de Comando (CLI) para criar novos conceitos Oct 21, 2023
@rwietter rwietter marked this pull request as ready for review October 21, 2023 23:11
@rwietter rwietter marked this pull request as draft October 24, 2023 18:06
@levxyca levxyca self-requested a review October 24, 2023 20:16
@levxyca levxyca added the enhancement New feature or request label Oct 24, 2023
@rwietter
Copy link
Contributor Author

rwietter commented Oct 27, 2023

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

parte1.mp4

Parte 2

parte2.mp4

Ops: removi o assignment sem querer.

@rwietter rwietter marked this pull request as ready for review October 28, 2023 00:07
@rwietter rwietter removed their assignment Oct 28, 2023
@levxyca
Copy link
Owner

levxyca commented Nov 6, 2023

@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
Copy link
Contributor

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
Copy link
Contributor Author

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
Copy link
Owner

levxyca commented Jul 2, 2024

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
Copy link
Contributor Author

rwietter commented Jul 3, 2024

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
Copy link
Owner

levxyca commented Jul 4, 2024

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

Automação de criação de novos termos e resolução de colisões na geração de IDs
4 participants