@zenifra/cli 0.1.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,13 +36,27 @@ zenifra help project env add
36
36
 
37
37
  ```bash
38
38
  zenifra auth login
39
- zenifra auth login --code 123456
39
+ zenifra auth login --profile staging --code 123456
40
40
  zenifra auth api-key --key znf_sua_chave
41
+ zenifra auth api-key --profile prod --key znf_sua_chave
41
42
  zenifra auth logout
43
+ zenifra profile list
44
+ zenifra profile show
45
+ zenifra profile add --name staging --description Homologacao --api-base https://api-stg.zenifra.com/v1 --mode api-key --key znf_sua_chave
46
+ zenifra profile use staging
47
+ zenifra profile edit staging --description "Homologacao interna"
48
+ zenifra profile remove staging
42
49
  zenifra orgs
43
50
  zenifra org set
44
- zenifra projects --type http
45
- zenifra projects create --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
51
+ zenifra plans
52
+ zenifra plans --type http
53
+ zenifra plans --type storage --json
54
+ zenifra create project
55
+ zenifra create project --name <name> --plan free --payment-mode hourly --config @examples/http-project.json
56
+ zenifra create project --name <name> --plan basic --payment-mode hourly --config @examples/http-github-project.json
57
+ zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/postgresql-project.json
58
+ zenifra create project --name <name> --plan db-basic --payment-mode monthly --config @examples/mariadb-project.json
59
+ zenifra projects --type http --page 1 --limit 15
46
60
  zenifra project info --project <project-id>
47
61
  zenifra project url --project <project-id>
48
62
  zenifra project logs --project <project-id> --instance <instance-id>
@@ -66,37 +80,113 @@ zenifra deploy watch --project <project-id> --build <build-id>
66
80
  - API padrao: `https://api.zenifra.com/v1`
67
81
  - Override de API: `ZENIFRA_API_URL=https://api-stg.zenifra.com/v1`
68
82
  - API key global: `ZENIFRA_API_KEY=znf_sua_chave`
69
- - Sessao local: `~/.config/zenifra-cli/session.json`
70
- - Override de sessao: `ZENIFRA_CONFIG_DIR=/path/custom`
83
+ - Store local de perfis: `~/.config/zenifra-cli/profiles.json`
84
+ - Override do diretorio local: `ZENIFRA_CONFIG_DIR=/path/custom`
71
85
 
72
- Todos os comandos de listagem aceitam `--json`.
86
+ Todos os comandos de listagem aceitam `--json`. `zenifra projects` e paginado por padrao com 15 itens por pagina; use `--page <n>` e `--limit <n>` para navegar.
87
+
88
+ Para comparar custo antes de criar um projeto, use:
89
+
90
+ ```bash
91
+ zenifra plans
92
+ zenifra plans --type http
93
+ zenifra plans --type database
94
+ zenifra plans --type storage --json
95
+ ```
96
+
97
+ `zenifra plans` funciona sem autenticacao e mostra os catalogos publicos de HTTP, banco e armazenamento.
73
98
 
74
99
  Valores de variaveis de ambiente sao mascarados por padrao, inclusive em `--json`.
75
100
  Use `--show-values` apenas quando precisar inspecionar os valores completos.
76
101
 
102
+ ## Perfis
103
+
104
+ A CLI agora trabalha com um perfil ativo. Cada perfil pode ter:
105
+
106
+ - `name`: identificador tecnico usado nos comandos
107
+ - `description`: descricao livre
108
+ - `apiBaseUrl`: API da Zenifra para aquele ambiente
109
+ - credencial:
110
+ - `api_key` para automacao organizacional
111
+ - `access_token` para login pessoal, com `selectedOrganizationId`
112
+
113
+ Exemplos:
114
+
115
+ ```bash
116
+ zenifra profile add --name prod --description Producao --api-base https://api.zenifra.com/v1 --mode api-key --key znf_sua_chave
117
+ zenifra profile add --name staging --description Homologacao --api-base https://api-stg.zenifra.com/v1 --mode login
118
+ zenifra profile list
119
+ zenifra profile show staging
120
+ zenifra profile use prod
121
+ ```
122
+
123
+ Regras de precedencia:
124
+
125
+ - `ZENIFRA_API_KEY` sobrescreve a credencial do perfil ativo apenas para a execucao atual
126
+ - `ZENIFRA_API_URL` sobrescreve a API base do perfil ativo apenas para a execucao atual
127
+ - `auth login` e `auth api-key` operam no perfil ativo por padrao
128
+ - `auth login --profile <name>` e `auth api-key --profile <name>` atualizam ou criam outro perfil e o tornam ativo
129
+
130
+ Migracao:
131
+
132
+ - se existir `session.json` legado e ainda nao existir `profiles.json`, a CLI migra automaticamente a sessao antiga para um perfil `default`
133
+
77
134
  ## Automacao com API key
78
135
 
79
136
  Crie uma API key global no painel da organizacao e use-a em jobs, pipelines e scripts:
80
137
 
81
138
  ```bash
82
139
  export ZENIFRA_API_KEY=znf_sua_chave
83
- zenifra projects --type http
140
+ zenifra projects --type http --page 1 --limit 15
84
141
  zenifra deploy --project <project-id> --branch main
85
142
  ```
86
143
 
87
- Tambem e possivel salvar a chave localmente:
144
+ Tambem e possivel salvar a chave localmente no perfil ativo:
88
145
 
89
146
  ```bash
90
147
  zenifra auth api-key --key znf_sua_chave
91
148
  ```
92
149
 
93
- API keys globais ja sao vinculadas a uma organizacao, entao comandos como `projects`, `deploy`, `builds` e `deployments` nao precisam de `org set`. Comandos pessoais como `orgs` e `org set` continuam exigindo `zenifra auth login`.
150
+ API keys globais ja sao vinculadas a uma organizacao, entao comandos como `projects`, `deploy`, `builds` e `deployments` nao precisam de `org set`. Comandos pessoais como `orgs` e `org set` continuam exigindo `zenifra auth login` em um perfil com token de usuario.
94
151
 
95
152
  Para reduzir impacto de vazamento, configure IPs permitidos na criacao da API key sempre que a automacao tiver origem fixa.
96
153
 
97
- ## Exemplo de projeto HTTP
154
+ ## Exemplos de projetos
155
+
156
+ Use os arquivos em `examples/` como base para `zenifra create project`:
157
+
158
+ - `examples/http-project.json`: projeto HTTP com imagem OCI publica
159
+ - `examples/http-github-project.json`: projeto HTTP com build via GitHub
160
+ - `examples/postgresql-project.json`: projeto PostgreSQL
161
+ - `examples/mariadb-project.json`: projeto MariaDB
162
+
163
+ Se voce rodar apenas `zenifra create project`, a CLI abre um wizard interativo estilo `npm init` e pergunta todos os campos guiados. Cada pergunta mostra:
164
+
165
+ - se o campo e obrigatorio ou opcional
166
+ - exemplos de valores aceitos
167
+ - link da documentacao relacionada
168
+
169
+ O wizard atual cobre:
170
+
171
+ - projetos `http` com origem `github` ou `oci`
172
+ - projetos `postgresql`
173
+ - projetos `mariadb`
174
+
175
+ `zenifra create project` nao assume valores default para `--plan` e `--payment-mode`.
176
+ Antes de escolher um plano com o usuario, compare os catalogos com `zenifra plans` para evitar suposicoes sobre custo.
177
+
178
+ Valores aceitos:
179
+
180
+ - `payment_mode`: `hourly`, `monthly`, `yearly`
181
+ - `type_project` no `config`: `http`, `postgresql`, `mariadb`
182
+ - `plan`: `free`, `static`, `basic`, `premium`, `premium_plus`, `business`, `deep_learning_basic`, `deep_learning_premium`, `db-free`, `db-starter`, `db-basic`, `db-premium`, `db-enterprise`
183
+ - `config.github.runtime` (quando houver GitHub em projeto HTTP): `nodejs` ou `python`
184
+
185
+ Observacoes do wizard:
98
186
 
99
- Use `examples/http-project.json` como base para `zenifra projects create`.
187
+ - conflitos entre documentacao e API sao validados pelo contrato real aceito pela API
188
+ - em projetos de banco, o wizard nao pergunta `username`, `password` nem `database name`
189
+ - em projetos de banco, a CLI preenche apenas campos tecnicos minimos exigidos pela validacao atual da API
100
190
 
101
191
  ## Publicacao no npm
102
192