ft_cli 0.1.8+5 copy "ft_cli: ^0.1.8+5" to clipboard
ft_cli: ^0.1.8+5 copied to clipboard

outdated

This project is one CLI for integrate Flutter and Dart with Clean Architecture

Flutter Arch CLI #

Gerador de código para facilitar uma arquitetura limpa #

Get Start:

dart pub global activate ft_cli

ou

dart pub global activate --source path ./RepositoryProject

Overview #

Para tornar mais fácil e intuitivo implementar a Arquitetura Uncle Bob's Clean Architecture. Esta CLI fornece a estrutura base, onde irá gerar dinamicamente as Classes conforme mostrado nos exemplos abaixo.

Também podendo ter a vantagem de editar de uma forma facíl e dinâmica atraves da edição de templete e triggers para aplicar replace em algum trexo de código e criar novos arquivos apartir dos comandos.

Comandos: #

Crie as variaveis configuraveis do seu projeto, gerando uma estrutura básica, onde ira gerar uma pasta .ft_cli

ft_cli init 

Gerando um novo módulo

ft_cli g layer lib/app/module/home
Result


# Generate Entity
ft_cli g entity lib/app/module/home Home
Result
// home.entitiy.dart 
class HomeEntity {

  HomeEntity();

}


# Generate UseCase
ft_cli g usecase lib/app/module/home GetHomeCards
Result
//get_home_cards.usecase.dart
abstract class GetHomeCardsUsecase {
  Future<void> call();
}
//get_home_cards_imp.usecase.dart
import 'get_home_cards_usecase.dart';

class GetHomeCardsImpUsecase implements GetHomeCardsUsecase {
  @override
  Future<void> call() {
    // TODO: implement call
    throw UnimplementedError();
  }
  
}
  


# Generate Repository
ft_cli g repository lib/app/module/home GetHomeCards
Result
// domain/repositories/get_home_cards.repository.dart
abstract class GetHomeCardsRepository {
  Future<void> call();
}
// data/repositories/get_home_cards_imp.repository.dart
import '../../repositories/get_home_cards_repository.dart';

class GetHomeCardsImpRepository implements GetHomeCardsRepository {
  @override
  Future<void> call() {
    // TODO: implement call
    throw UnimplementedError();
  }
}


# Generate Dto
ft_cli g dto lib/app/module/home Home
Result
// home_dto.dart
import '../../models/entities/home_entity.dart';

class HomeDto extends HomeEntity {

  HomeDto() : super();

}

# Generate Page
ft_cli g page lib/app/module/home HomeCards
# Generate Controller
ft_cli g controller lib/app/module/home HomeCards

-------------------------- HELPS -------------------------- 

i, init             Gera os arquivos configuraveis do projeto...
g, gen              Geração de estruturade acordo com a opção page, datasoure, repository...
p, page             Cria uma nova pagina com um controller...
c, controller       Cria um novo controller...
d, datasource       Cria a camada de busca dados de fontes externas...
r, repository       Cria a camada para tratar os dados...
u, usecase          Cria a camada para tratar as regras de negócio...
e, entity           Cria as entidades...
dto                 Cria os dto para transferência de dados...

mf, microfrontend   Seleciona a opção para criação de novos componentes de microfrontend...


Palavras reservadas #

Reserved words can be used in the templet files that are generated in .ft_cli/templete the reserved words must be used inside mustaches {{}} example {{name}}, can also be used in reserved words an extension, example {{name.pascalCase}} whose extension will format the word as needed, you can check the lists below for all reserved words and extensions

Palavras reservadas podem ser usadas nos arquivos de modelo que são gerados em .ft_cli/templete as palavras reservadas devem ser usadas dentro de mustaches {{}} exemplo {{nome}}, também podem ser usadas em palavras reservadas uma extensão, exemplo {{name.pascalCase}} cuja extensão formatará a palavra conforme necessário, você pode verificar as listas abaixo para todas as palavras reservadas e extensões

  • Palavras reservadas podem ser editadas em meu_projeto\.ft_cli\configs.json
Palavras reservadas default
name Entrada pelo terminal, este valor é o último parâmetro da expressão para gerar os modelos
path Entrada pelo terminal, caminho onde o novo arquivo será gerado
module input input by the terminal, name of the module that will generate the new files
projectName Entrada do nome do projeto quando é criado um componente de microfrontend
projectNameComplete O nome do projeto concatenado com o padrão do modelo dos microfrontend
repositoryPathInterface domain/repositories
repositoryNameFileInterface {{name.snakeCase}}_repository
repositoryPath data/repositories
repositoryNameFile {{name.snakeCase}}_imp_repository
repositoryNameClassInterface {{name.pascalCase}}Repository
repositoryNameClass {{name.pascalCase}}ImpRepository
datasourcePathInterface data/datasources
datasourceNameFileInterface {{name.snakeCase}}_datasource
datasourcePath external/datasources
datasourceNameFile {{name.snakeCase}}_imp_datasource
datasourceNameClassInterface {{name.pascalCase}}Datasource
datasourceNameClass {{name.pascalCase}}ImpDatasource
usecasePathInterface domain/usecases
usecaseNameFileInterface {{name.snakeCase}}_usecase
usecasePath domain/usecases
usecaseNameFile {{name.snakeCase}}_imp_usecase
usecaseNameClassInterface {{name.pascalCase}}Usecase
usecaseNameClass {{name.pascalCase}}ImpUsecase
pagePath presentation/ui/pages/{{name.snakeCase}}
pageNameFile {{name.snakeCase}}_page
pageNameClass {{name.pascalCase}}Page
controllerPath presentation/ui/pages/{{name.snakeCase}}
controllerNameFile {{name.snakeCase}}_controller
controllerNameClass {{name.pascalCase}}Controller

Extensions #

extension Exemple
camelCase testeCase
constantCase TESTE_CASE
sentenceCase Teste case
snakeCase teste_case
dotCase teste.case
paramCase teste-case
pathCase teste/case
pascalCase TesteCase
headerCase Teste-Case
titleCase Teste Case

Triggers #

Replace

in .ft_cli/templete a {{term}}_replace_trigger.json file is generated where from your annotation it can apply a replace to any input expression, for example:

Em .ft_cli/templete, um arquivo {{term}}_replace_trigger.json é gerado onde, a partir de sua anotação, ele pode aplicar uma substituição a qualquer expressão de entrada, por exemplo:

[
    {
        "pathFile": "{{path}}\\{{module}}_module.dart",
        "from": "//imports",
        "to": "//imports\nimport '{{controllerPath}}/{{controllerNameFile}}.dart';"
    },
    {
        "pathFile": "{{path}}\\{{module}}_module.dart",
        "from": "//Dependence",
        "to": "//Dependence\nfinal {{controllerNameClass.camelCase}} = {{controllerNameClass.pascalCase}};"
    }
]

Onde irá executar um replace no arquivo apontado, a partir da expressão

Criar novo arquivo

in .ft_cli / templete, a file {{term}} _ new_file_trigger.json is generated where, from his annotation, he can create a new file with the pre-defined templete, for example:

Note, the generate variable must be true to generate the file. em .ft_cli/templete, um arquivo {{term}}_new_file_trigger.json é gerado onde, a partir de sua anotação, ele pode criar um novo arquivo com o modelo predefinido, por exemplo:

Observe que a variável generate deve ser true para gerar o arquivo.

[
    {
        "pathFile": "{{path}}\\{{module}}_module",
        "pathTemplete": ".ft_cli/template/layer/complete_new_file_exemple.template",
        "generate": true
    }
]

Templete

.ft_cli/template/layer/complete_new_file_exemple.template

class {{module.pascalCase}}Module extends Module {
  @override
  final List<Bind> binds = [
    //Usecases

    //Repositories

    //Datasources
      
    //Controllers
  ];

  @override
  final List<ModularRoute> routes = [
    //Pages
  ];
}

Onde irá gerar um novo arquivo partir do templete definido.

Criar novo arquivo

Envie solicitações de recursos e bugs para melhorar a CLI relatar problemas.

45
likes
0
points
8
downloads

Publisher

unverified uploader

Weekly Downloads

This project is one CLI for integrate Flutter and Dart with Clean Architecture

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

ansicolor, args, get_it, interact, path, process_run, recase

More

Packages that depend on ft_cli