Automação com Mason Brick

Automação com Mason Brick

script/template pra "qualquer" coisa

fiz com Flutter/Dart pq é o q eu + uso e na boa, é chatão ficar criando cada pasta e add cada package 1 por 1 (até tem umas formas de deixar + rápido, mas msm assim) , mas da pra fazer meio q qualquer coisa, é só tu usar a criatividade (e ter muita paciência até ficar redondinho)

vou falar rapidinho sobre a instalação, mas meu foco vai ser no meu brick + hooks

Instalação do Mason

tem 2 formas de fazer as instalação, a 1ª é tendo o Flutter/Dart instalado, a 2ª é pelo homebrew

flutter/dart pub global

no seu terminal, seja ele qual for, é só rodar o comando flutter pub global activate mason_cli q é gg

Homebrew

no seu terminal, seja no macOS ou Linux, é só rodar esses comandos

brew tap felangel/mason
brew install mason

Criação

rode o comando mason init, esse comando vai criar o mason.yaml, q é o arquivo onde vão ficar salvos seus bricks, depois disso, já rola criar nossos próprios bricks

Criação do Brick

sugiro criar uma pasta, em algum canto, pra deixar seus bricks

  1. acesse a pasta pelo seu terminal
  2. rode o comando mason make nome_do_seu_bricks, isso vai criar uma pasta com o nome q vc deu e dentro vai ter 4 arquivos e 1 pasta
  3. dentro do brick.yaml, é onde vc vai colocar as variáveis no padrão "{mustache}"... eu não conhecia, mas curti
  4. é ali q coloca o {{nomeApp}} ou {{nomeMódulo}} por exemplo, também tem tipo umas funções, tipo {{variavel.snakeCase()}}, q seria = hello_world e assim vai
  5. a principio, a pasta __brick__, só via ter um arquivo HELLO.md, só deletar e começar a montar sua estrutura/arquivos dentro dessa pasta
  6. caso queira adicionar algo (em um projeto flutter) ao main.dart de um projeto existente, é só criar a pasta lib e dentro dela o main.dart, escrever o q quiser dentro do arquivo e gg
  7. toda e qualquer parte dinâmica, tem q ter uma pergunta no brick.yaml, a parte dinâmica no código usando o {{mustache}} e claro, toda a sequencia de pastas e arquivos q queira substituir/add

Criação do Hooks

na doc, tem um aviso q os hooks só suportam Dart por enquanto

  1. acesse 1 pasta antes do seu brick pelo seu terminal
  2. rode o comando mason new nome_do_seu_bricks --hooks, isso vai criar uma pasta dentro do seu brick com o nome de hooks, 5 arquivos e 1 pasta, mas vc só vai mexer nos 2 arquivos .dart
  3. as msm variáveis do brick.yaml vão funcionar no seu hook
  4. o post_gen.dart é pra fazer coisas depois q o arquivo terminar de ser gerado, tipo add packages
  5. o pre_gen.dart é pra fazer coisas antes (não cheguei a usar ele), mas acredito q de pra criar o app por ele, ai entra o bricks e finaliza com o hook post_gen
  6. caso queira usar só 1 deles é só deletar o arquivo q não quer usar
  7. eu basicamente so pra add packages, então o arquivo post_gen.dart fica com várias linhas assim await Process.run("flutter", ["pub", "add", "flutter_modular"]);, q no caso é o msm q vc rodar no terminar flutter pub add flutter_modular e assim vai

Usando

quando tem hooks dentro do brick, ele roda sozinho (mas tem como fazer ele não rodar, caso queira)

  • mason add nome_do_brick (esse só funciona se o brick estiver no BrickHub
  • mason add nome_do_brick --git-path https://url_do_git (vai instalar o brick do git)
  • mason add nome_do_brick --path caminho/do/brick (pra usar localmente)
  • mason ls (mostra os bricks q vc tiver instalado)
  • mason get (atualiza seus bricks, lembre-se desse comando quando for usar um localmente q vc tenha feito alterações)
  • mason make nome_do_brick (pra usar o brick, se tiver hook vai rodar antes/depois)
  • mason make nome_do_brick --no-hooks (pra usar o brick, sem os hooks)

Explicação

gosto de automatizar/deixar + fácil/rápido meus trabalhos, principalmente coisas repetitivas

leva +- 60s pra tudo ser executado (m1 air 8gb)

meu Brick

  • fiz a arquitetura q eu gosto e q + me sinto confortável, seguindo alguns padrões e talz (fique a vontade para alterar viu ?!)
  • vira e mexe eu crio um projeto novo, então pq não deixar a parte inicial automática né ?! já q eu sempre uso a msm coisa... modular como base do app, sentry pros erros/perfomance, firebase remote config pros feature toggles e pra mandar urls de forma segura e assim vai

meu Hooks

  • add packages necessários pro "meu padrão" funcionar
  • até poderia fazer com um comando gigante de "uma vez", mas eu ia ter q salvar ele em algum canto ou até fazer um alias, mas ai fica ruim de compartilhar (acredite, eu tentei)

Links

brickhub.dev

GitHub

YouTube


Bom, acho q é isso, obrigado por ler !

Se eu falei alguma besteira, me corrija pf, e se tiver um tempo, se inscreva na minha newsletter e fique a vontade para se conectar

Como a minha classe favorita do Ragnarok, Super Aprendiz, sou um Eterno Aprendiz

n5 | v0.5

Did you find this article valuable?

Support Felipe Mazieri by becoming a sponsor. Any amount is appreciated!