CLI¶
Instalando¶
Para uma instalação global utilize:
npm i -g @sdkgen/cli
Para instalar dentro do seu projeto Node corrente, utilize:
npm i --save-dev @sdkgen/cli
Neste caso você precisa chamar como npx sdkgen em vez de sdkgen.
Gerando código¶
O uso primário da CLI é gerar código fonte dos targets, seja de servidor ou de cliente. Para isso utilize a seguinte estrutura de comando:
sdkgen <source file> -o <output file> -t <target name>
Onde <source file> é o seu arquivo .sdkgen, por exemplo src/api.sdkgen. <output file> é o arquivo de destino, por exemplo api.dart. Por fim o <target name> se refere ao slug do target a ser utilizado, por exemplo flutter. Compondo este exemplo:
sdkgen src/api.sdkgen -o api.dart -t flutter
Estes são os target possíveis:
| Slug | Descrição |
|---|---|
| csharp_server | Servidor .NET, em C# |
| fsharp_server | Servidor .NET, em F# |
| flutter | Cliente para Flutter, em Dart |
| kotlin_android | Cliente para Android nativo, em Kotlin |
| typescript_interfaces | Apenas tipos da API, em TypeScript |
| typescript_nodeclient | Cliente para Node.js, em TypeScript |
| typescript_nodeserver | Servidor Node.js, em TypeScript |
| typescript_web | Cliente para uso na Web, em TypeScript |
| swift_ios | Cliente para iOS nativo, em Swift |
| rxswift_ios | Cliente para iOS nativo, em Swift usando Rx |
Checagem de compatibilidade¶
É frequente precisar realizar alterações em uma API existente, seja adicionando novas funções, novos campos, ou removendo itens. Nestes casos é sempre preciso ter cuidado para não introduzir uma "Breaking Change", ou seja: uma alteração que seja inesperada pelos clientes existentes. Alguns exemplos de alterações que podem causar problemas:
- Remover ou renomear uma função;
- Adicionar um argumento não nulável;
- Adicionar um novo valor possível em um enum que é retornado por uma função;
- Mudar um argumento de
stringparauuid.
E alterações que podem serem feitas sem risco:
- Adicionar um novo campo em um objeto que é retornado por uma função;
- Mudar a ordem dos argumentos de uma função;
- Adicionar novas funções;
- Mudar um argumento de
uuidparastring.
Estas regras podem rapidamente ficar complexas e são difíceis de checar por quem está escrevendo uma alteração em uma API existente. Por conta disso o sdkgen vem com uma ferramenta para checar compatibilidade entre alterações. Para isso utilize o seguinte comando:
sdkgen compatibility --old <old source file> --new <new source file>
Por exemplo:
sdkgen compatibility --old api_antiga.sdkgen --new api_nova.sdkgen
Caso existam quebras de compatibilidade estas serão reportadas.