Executando verificação de segurança...
1

Meu framework para desenvolvimento de CLI (e uma linguagem de template!)

Eu desenvolvi um framework utilizando Bun, o Wave Shell, uma ferramenta para desenvolvimento de CLIs.

Eu sempre desenvolvi alguns projetinhos de command line interfaces e, como forma de estudo e aprimoramento, decidi começar a criar o meu próprio framework para isso.

O Wave Shell foi bastante inspirado no GlueGun, um framework já existente para CLIs de nodejs. Decidi fazer a minha própria versão e agora com Bun!

Comandos

Basicamente tudo que você criar em src/commands vira um comando registrado da sua CLI.

src/commands/hello.ts

import { WaveCommand } from "wave-shell";

export default {
  description: 'Hello world command',
  run: async ({ args, print }) => {
    const { world } = args.namedArgs; //world parsed as a boolean

    if (!world) {
      return print.error("We expected --world to say the phrase 😓")
    }

    print.success("Hello World!")
  }
} as WaveCommand

A sua CLI poderá ser executada de acordo com o nome do seu projeto, então vamos supor que o nome do projeto seja wave.

Digitando isso aqui na linha de comando: wave hello --world (em qualquer lugar, já que ele registra de forma global) vai executar o código a cima!

Digitando apenas wave ele mostra um helper com todos os comandos registrados e passíveis de ser executados (em src/commands/).

Também foi aplicado o algoritmo levenshtein para identificar se o comando digitado está próximo de um comando que realmente existe (assim como no npm, por exemplo). Dando uma mensagem parecida com isso:

[Wave Cli 🌊] Command 'creat' does not exist. Did you mean 'create'?

Surfstar

Uma linguagem de template (ainda engatinhando) para ser utilizada dentro do Wave Shell (oorém também lançada como um pacote separado). Ela usa a mesma sintaxe que o handlebars e a minha meta é fazer ela ser mais leve e rápida, aplicando também futuramente mais lógicas para dentro dos arquivos .surf, o qual o Surfstar utiliza.

Criei uma documentação para o que é possível fazer atualmente (ainda não 100% pronta) e vou ir adicionando mais coisas conforme o projeto aumenta.

Docs: https://docs.wave-shell.dev

E como todo bom projeto, tudo é open source, então sintam-se à vontade para contribuir ou criar issues!

Repositórios:

Começando com o framework:

Apenas execute

bunx wave-shell-cli create

Para quaisquers dúvidas só deixar aí no comentário e dar uma olhada na documentação também!

Carregando publicação patrocinada...
0