smoonb 0.0.71 → 0.0.73
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/LICENSE.pt-BR.md +24 -0
- package/README.md +441 -363
- package/README.pt-BR.md +730 -0
- package/bin/smoonb.js +187 -128
- package/package.json +6 -3
- package/src/commands/backup/index.js +13 -12
- package/src/commands/backup/utils.js +25 -31
- package/src/commands/check.js +12 -8
- package/src/commands/config.js +142 -134
- package/src/commands/functions.js +14 -10
- package/src/commands/import.js +22 -19
- package/src/commands/restore/index.js +13 -12
- package/src/i18n/index.js +216 -0
- package/src/i18n/locales/en.json +251 -0
- package/src/i18n/locales/pt-BR.json +251 -0
- package/src/index.js +19 -18
- package/src/utils/banner.js +19 -16
- package/src/utils/prompt.js +4 -1
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
{
|
|
2
|
+
"app.title": "Supa Moonbase (smoonb)",
|
|
3
|
+
"app.tagline": "Backup e restauração: completo e simples, como deveria ser",
|
|
4
|
+
"app.developedBy": "Desenvolvido por: Goalmoon Tecnologia LTDA",
|
|
5
|
+
"app.website": "Website: https://smoonb.com",
|
|
6
|
+
"app.documentation": "Documentação: https://github.com/almmello/smoonb",
|
|
7
|
+
"app.issues": "Issues: https://github.com/almmello/smoonb/issues",
|
|
8
|
+
|
|
9
|
+
"help.header": "Comandos",
|
|
10
|
+
"help.usage": "Uso",
|
|
11
|
+
"help.footer": "Use \"{cmd} help [command]\" para mais informações sobre um comando.",
|
|
12
|
+
"help.commands.backup": "Fazer backup completo do projeto Supabase",
|
|
13
|
+
"help.commands.restore": "Restaurar backup completo (modo interativo com psql)",
|
|
14
|
+
"help.commands.check": "Verificar integridade do projeto após restauração",
|
|
15
|
+
"help.commands.import": "Importar backup do Dashboard e preparar a estrutura para restauração",
|
|
16
|
+
|
|
17
|
+
"prompt.confirm": "Continuar?",
|
|
18
|
+
"prompt.confirmYes": "(S/n)",
|
|
19
|
+
"prompt.confirmNo": "(s/N)",
|
|
20
|
+
"prompt.cancelled": "Operação cancelada.",
|
|
21
|
+
|
|
22
|
+
"error.generic": "Algo inesperado aconteceu.",
|
|
23
|
+
"error.pathNotFound": "Caminho não encontrado: {path}",
|
|
24
|
+
"error.permissionDenied": "Permissão negada: {path}",
|
|
25
|
+
"error.commandNotFound": "Comando não reconhecido: {command}",
|
|
26
|
+
"error.useHelp": "Use {cmd} --help para ver comandos disponíveis",
|
|
27
|
+
"error.uncaughtException": "Erro não tratado: {message}",
|
|
28
|
+
"error.unhandledRejection": "Promise rejeitada não tratada: {reason}",
|
|
29
|
+
|
|
30
|
+
"import.start": "Preparando a estrutura de diretórios para o backup importado...",
|
|
31
|
+
"import.scaffoldOnly": "Criando apenas a estrutura, sem mover arquivos.",
|
|
32
|
+
"import.done": "Importação concluída. Pronto para restaurar.",
|
|
33
|
+
"import.fileRequired": "Arquivo de backup não fornecido",
|
|
34
|
+
"import.fileNotFound": "Arquivo de backup não encontrado: {path}",
|
|
35
|
+
"import.invalidFormat": "Arquivo de backup deve ser .backup.gz ou .backup",
|
|
36
|
+
"import.storageNotFound": "Arquivo de storage não encontrado: {path}",
|
|
37
|
+
"import.storageInvalidFormat": "Arquivo de storage deve ser .storage.zip",
|
|
38
|
+
"import.invalidFileName": "Nome do arquivo de backup não está no formato esperado do Dashboard",
|
|
39
|
+
"import.expectedFormat": "Formato esperado: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
|
|
40
|
+
"import.fileReceived": "Arquivo recebido: {fileName}",
|
|
41
|
+
"import.success": "Arquivo de backup importado com sucesso!",
|
|
42
|
+
"import.storageSuccess": "Arquivo de storage importado com sucesso!",
|
|
43
|
+
"import.nextStep": "Próximo passo: Execute 'npx smoonb restore' para restaurar este backup",
|
|
44
|
+
|
|
45
|
+
"check.start": "Verificando integridade do projeto: {projectId}",
|
|
46
|
+
"check.done": "Verificação concluída!",
|
|
47
|
+
"check.reportSaved": "Relatório salvo em: {path}",
|
|
48
|
+
"check.error": "Erro na verificação: {message}",
|
|
49
|
+
"check.psqlNotFound": "psql não encontrado",
|
|
50
|
+
"check.installPostgres": "Instale PostgreSQL:",
|
|
51
|
+
"check.databaseUrlNotConfigured": "databaseUrl não configurada",
|
|
52
|
+
"check.configureDatabaseUrl": "Configure databaseUrl no .smoonbrc",
|
|
53
|
+
|
|
54
|
+
"docker.notInstalled": "DOCKER DESKTOP NÃO ENCONTRADO",
|
|
55
|
+
"docker.notRunning": "DOCKER DESKTOP NÃO ESTÁ EXECUTANDO",
|
|
56
|
+
"docker.instructions": "Para fazer backup completo do Supabase, você precisa:",
|
|
57
|
+
"docker.installDocker": "1. Instalar Docker Desktop",
|
|
58
|
+
"docker.runDocker": "2. Executar Docker Desktop",
|
|
59
|
+
"docker.waitInitialization": "Aguardar inicialização completa",
|
|
60
|
+
"docker.repeatCommand": "3. Repetir o comando de backup",
|
|
61
|
+
"docker.download": "Download: https://docs.docker.com/desktop/install/",
|
|
62
|
+
"docker.tip": "Dica: Docker Desktop deve estar rodando em segundo plano",
|
|
63
|
+
"docker.required": "Docker Desktop é obrigatório para backup completo do Supabase",
|
|
64
|
+
"docker.requiredComponents": "Docker Desktop é obrigatório para backup completo do Supabase\n - Database PostgreSQL\n - Edge Functions\n - Todos os componentes via Supabase CLI",
|
|
65
|
+
"docker.cancelled": "Backup cancelado - Pré-requisitos não atendidos",
|
|
66
|
+
"docker.installComponents": "Instale os componentes necessários e tente novamente",
|
|
67
|
+
|
|
68
|
+
"supabase.cliNotFound": "SUPABASE CLI NÃO ENCONTRADO",
|
|
69
|
+
"supabase.installInstructions": "Para fazer backup completo do Supabase, você precisa:",
|
|
70
|
+
"supabase.installCli": "1. Instalar Supabase CLI",
|
|
71
|
+
"supabase.repeatCommand": "2. Repetir o comando de backup",
|
|
72
|
+
"supabase.installLink": "Instalação: npm install -g supabase",
|
|
73
|
+
"supabase.required": "Supabase CLI é obrigatório para backup completo do Supabase",
|
|
74
|
+
"supabase.requiredComponents": "Supabase CLI é obrigatório para backup completo do Supabase\n - Database PostgreSQL\n - Edge Functions\n - Todos os componentes via Docker",
|
|
75
|
+
|
|
76
|
+
"backup.components": "Componentes de Backup:",
|
|
77
|
+
"backup.database": "Database PostgreSQL (pg_dumpall + SQL separados)",
|
|
78
|
+
"backup.extensions": "Database Extensions and Settings",
|
|
79
|
+
"backup.roles": "Custom Roles",
|
|
80
|
+
"backup.functions": "Edge Functions",
|
|
81
|
+
"backup.auth": "Auth Settings",
|
|
82
|
+
"backup.storage": "Storage Buckets",
|
|
83
|
+
"backup.realtime": "Realtime Settings",
|
|
84
|
+
"backup.temp": "Supabase .temp",
|
|
85
|
+
"backup.migrations": "Migrations",
|
|
86
|
+
|
|
87
|
+
"restore.start": "Iniciando processo de restauração...",
|
|
88
|
+
"restore.done": "Restauração concluída!",
|
|
89
|
+
"restore.error": "Erro na restauração: {message}",
|
|
90
|
+
|
|
91
|
+
"config.title": "Configuração do smoonb...",
|
|
92
|
+
"config.init": "Inicializando configuração...",
|
|
93
|
+
"config.show": "Mostrando configuração...",
|
|
94
|
+
"config.options": "Opções disponíveis:",
|
|
95
|
+
"config.initOption": "--init Inicializar configuração",
|
|
96
|
+
"config.showOption": "--show Mostrar configuração atual",
|
|
97
|
+
"config.error": "Erro na configuração:",
|
|
98
|
+
"config.fileCreated": "Arquivo de configuração criado: {path}",
|
|
99
|
+
"config.fileExists": "Arquivo de configuração já existe: {path}",
|
|
100
|
+
"config.fileNotFound": "Arquivo de configuração não encontrado: {path}",
|
|
101
|
+
|
|
102
|
+
"functions.cliNotFound": "Supabase CLI não encontrado",
|
|
103
|
+
"functions.installCli": "Instale o Supabase CLI:",
|
|
104
|
+
"functions.installLink": "npm install -g supabase",
|
|
105
|
+
"functions.orVisit": "ou visite: https://supabase.com/docs/guides/cli",
|
|
106
|
+
"functions.availableCommands": "Comandos disponíveis para Edge Functions:",
|
|
107
|
+
"functions.list": "Listar functions:",
|
|
108
|
+
"functions.deploy": "Deploy functions:",
|
|
109
|
+
"functions.pull": "Pull functions (se disponível):",
|
|
110
|
+
"functions.moreOptions": "Para mais opções, use o Supabase CLI diretamente:",
|
|
111
|
+
"functions.error": "Erro: {message}",
|
|
112
|
+
|
|
113
|
+
"disclaimer.title": "Universal Disclaimer / Aviso Legal Universal",
|
|
114
|
+
"disclaimer.text": "Ao continuar, você reconhece e concorda que o Supa Moonbase (smoonb) é fornecido \"NO ESTADO EM QUE SE ENCONTRA\" (\"AS IS\") e \"CONFORME DISPONIBILIDADE\" (\"AS AVAILABLE\"), sem garantias de qualquer natureza—expressas, implícitas ou legais—incluindo, sem limitação, garantias de comercialização, adequação a um fim específico e não violação, na máxima extensão permitida pela lei aplicável. Operações de backup e restauração envolvem riscos inerentes, os ambientes variam amplamente e não podemos prever ou validar todas as configurações dos usuários. Você é o único responsável por validar seu próprio ambiente, manter cópias independentes e verificar os resultados antes de utilizá-los em produção. Construímos o Supa Moonbase (smoonb) com repositórios públicos, auditáveis e de código aberto para ajudar pessoas a simplificar seus fluxos de trabalho, mas isso não cria qualquer garantia, promessa de suporte ou compromisso de nível de serviço.",
|
|
115
|
+
"disclaimer.limitation": "Limitação de responsabilidade — Na máxima extensão permitida por lei, a Goalmoon Tecnologia LTDA, seus contribuidores e licenciadores não serão responsáveis por quaisquer danos indiretos, incidentais, especiais, consequentes, exemplares ou punitivos (incluindo perda de dados, interrupção de negócios ou lucros cessantes) decorrentes ou relacionados ao uso, incapacidade de uso, operações de backup/restauração realizadas por, ou resultados produzidos pelo Supa Moonbase (smoonb). Em qualquer caso, nossa responsabilidade agregada por todas as reivindicações relacionadas ao Supa Moonbase (smoonb) não excederá o valor pago por você pelo Supa Moonbase (smoonb) nos 12 meses anteriores ao evento. Nada neste aviso exclui ou limita responsabilidades onde tais limites sejam proibidos por lei, incluindo (conforme aplicável) dolo ou culpa grave.",
|
|
116
|
+
"disclaimer.acceptBackup": "Você aceita os Termos de Uso e o Aviso de Risco de Backup?",
|
|
117
|
+
"disclaimer.acceptRestore": "Você aceita os Termos de Uso e o Aviso de Risco de Restauração?",
|
|
118
|
+
"disclaimer.acceptImport": "Você aceita os Termos de Uso e o Aviso de Risco de Importação?",
|
|
119
|
+
"disclaimer.operationCancelled": "Operação cancelada pelo usuário.",
|
|
120
|
+
|
|
121
|
+
"consent.title": "O smoonb irá ler e escrever o arquivo .env.local localmente.",
|
|
122
|
+
"consent.backup": "Um backup automático do .env.local será criado antes de qualquer alteração.",
|
|
123
|
+
"consent.mapping": "Vamos mapear suas variáveis de ambiente para garantir que todas as chaves necessárias estejam presentes e com os valores corretos do projeto de destino.",
|
|
124
|
+
"consent.proceed": "Você consente em prosseguir?",
|
|
125
|
+
|
|
126
|
+
"help.configuration": "CONFIGURAÇÃO:",
|
|
127
|
+
"help.configurationDesc": "Configure o arquivo .env.local na raiz do projeto com suas credenciais Supabase. O smoonb irá mapear as variáveis interativamente na primeira execução.",
|
|
128
|
+
"help.update": "ATUALIZAR PARA ÚLTIMA VERSÃO:",
|
|
129
|
+
"help.updateCommand": "npm install smoonb@latest",
|
|
130
|
+
"help.manual": "MANUAL DE USO - EXEMPLOS COMPLETOS:",
|
|
131
|
+
"help.backupTitle": "1. BACKUP - Fazer backup completo do projeto:",
|
|
132
|
+
"help.backupExample1": "npx smoonb backup",
|
|
133
|
+
"help.backupExample1Desc": "# Processo interativo que captura todos os componentes do Supabase",
|
|
134
|
+
"help.backupExample2": "npx smoonb backup --skip-realtime",
|
|
135
|
+
"help.backupExample2Desc": "# Pula a captura interativa de Realtime Settings",
|
|
136
|
+
"help.restoreTitle": "2. RESTORE - Restaurar backup em um projeto:",
|
|
137
|
+
"help.restoreExample1": "npx smoonb restore",
|
|
138
|
+
"help.restoreExample1Desc": "# Processo interativo que lista backups disponíveis e permite escolher",
|
|
139
|
+
"help.restoreExample2": "npx smoonb restore --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
|
|
140
|
+
"help.restoreExample2Desc": "# Importa e restaura diretamente o arquivo de backup (pula seleção)",
|
|
141
|
+
"help.restoreExample3": "npx smoonb restore --file \"backup.backup.gz\" --storage \"meu-projeto.storage.zip\"",
|
|
142
|
+
"help.restoreExample3Desc": "# Importa e restaura backup e storage juntos",
|
|
143
|
+
"help.importTitle": "3. IMPORT - Importar backup do Dashboard do Supabase:",
|
|
144
|
+
"help.importExample1": "npx smoonb import --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
|
|
145
|
+
"help.importExample1Desc": "# Importa apenas o arquivo de database",
|
|
146
|
+
"help.importExample2": "npx smoonb import --file \"backup.backup.gz\" --storage \"meu-projeto.storage.zip\"",
|
|
147
|
+
"help.importExample2Desc": "# Importa database e storage juntos (storage é opcional)",
|
|
148
|
+
"help.checkTitle": "4. CHECK - Verificar integridade após restauração:",
|
|
149
|
+
"help.checkExample1": "npx smoonb check",
|
|
150
|
+
"help.checkExample1Desc": "# Verifica conexão, extensões, tabelas, RLS, Realtime e Storage",
|
|
151
|
+
"help.tipsTitle": "💡 DICAS IMPORTANTES:",
|
|
152
|
+
"help.tip1": "• O comando import requer um arquivo de backup (.backup.gz), mas o storage (.storage.zip) é opcional",
|
|
153
|
+
"help.tip2": "• O storage depende de um backup, mas o backup não depende do storage",
|
|
154
|
+
"help.tip3": "• Use caminhos absolutos ou relativos para os arquivos no comando import",
|
|
155
|
+
"help.tip4": "• O formato do arquivo de backup deve ser: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz",
|
|
156
|
+
"help.tip5": "• O formato do arquivo de storage deve ser: *.storage.zip",
|
|
157
|
+
|
|
158
|
+
"help.commands.backupDesc": "Fazer backup completo do projeto Supabase usando Supabase CLI",
|
|
159
|
+
"help.commands.backupSkipRealtime": "Pular captura interativa de Realtime Settings",
|
|
160
|
+
"help.commands.backupExamples": "Exemplos:",
|
|
161
|
+
"help.commands.backupExample1": "npx smoonb backup",
|
|
162
|
+
"help.commands.backupExample1Desc": "# Processo interativo completo",
|
|
163
|
+
"help.commands.backupExample2": "npx smoonb backup --skip-realtime",
|
|
164
|
+
"help.commands.backupExample2Desc": "# Pula configuração de Realtime Settings",
|
|
165
|
+
"help.commands.backupWhat": "O que é capturado:",
|
|
166
|
+
"help.commands.backupWhat1": "• Database PostgreSQL (pg_dumpall + SQL separado)",
|
|
167
|
+
"help.commands.backupWhat2": "• Database Extensions and Settings",
|
|
168
|
+
"help.commands.backupWhat3": "• Custom Roles",
|
|
169
|
+
"help.commands.backupWhat4": "• Edge Functions (download automático)",
|
|
170
|
+
"help.commands.backupWhat5": "• Auth Settings (via Management API)",
|
|
171
|
+
"help.commands.backupWhat6": "• Storage Buckets (metadados via Management API)",
|
|
172
|
+
"help.commands.backupWhat7": "• Realtime Settings (7 parâmetros interativos)",
|
|
173
|
+
"help.commands.backupWhat8": "• Supabase .temp (arquivos temporários)",
|
|
174
|
+
"help.commands.backupWhat9": "• Migrations (todas as migrations do projeto)",
|
|
175
|
+
|
|
176
|
+
"help.commands.restoreDesc": "Restaurar backup completo usando psql (modo interativo)",
|
|
177
|
+
"help.commands.restoreFile": "Caminho completo do arquivo .backup.gz a importar e restaurar (opcional)",
|
|
178
|
+
"help.commands.restoreStorage": "Caminho completo do arquivo .storage.zip a importar junto com o backup (opcional)",
|
|
179
|
+
"help.commands.restoreExamples": "Exemplos:",
|
|
180
|
+
"help.commands.restoreExample1": "npx smoonb restore",
|
|
181
|
+
"help.commands.restoreExample1Desc": "# Processo interativo que lista backups disponíveis",
|
|
182
|
+
"help.commands.restoreExample2": "npx smoonb restore --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
|
|
183
|
+
"help.commands.restoreExample2Desc": "# Importa e restaura diretamente o arquivo de backup",
|
|
184
|
+
"help.commands.restoreExample3": "npx smoonb restore --file \"backup.backup.gz\" --storage \"meu-projeto.storage.zip\"",
|
|
185
|
+
"help.commands.restoreExample3Desc": "# Importa e restaura backup e storage juntos",
|
|
186
|
+
"help.commands.restoreFlow": "Fluxo do restore:",
|
|
187
|
+
"help.commands.restoreFlow1": "1. Validação Docker",
|
|
188
|
+
"help.commands.restoreFlow2": "2. Consentimento para ler/escrever .env.local",
|
|
189
|
+
"help.commands.restoreFlow3": "3. Mapeamento de variáveis de ambiente",
|
|
190
|
+
"help.commands.restoreFlow4": "4. Seleção de backup disponível (pula se --file fornecido)",
|
|
191
|
+
"help.commands.restoreFlow5": "5. Seleção de componentes para restaurar",
|
|
192
|
+
"help.commands.restoreFlow6": "6. Resumo detalhado e confirmação",
|
|
193
|
+
"help.commands.restoreFlow7": "7. Execução da restauração",
|
|
194
|
+
"help.commands.restoreWhenFile": "Quando usar --file:",
|
|
195
|
+
"help.commands.restoreWhenFile1": "• Importa automaticamente o arquivo de backup antes de restaurar",
|
|
196
|
+
"help.commands.restoreWhenFile2": "• Elimina a etapa de seleção de backup",
|
|
197
|
+
"help.commands.restoreWhenFile3": "• Se --storage fornecido, importa também o arquivo de storage",
|
|
198
|
+
"help.commands.restoreWhenFile4": "• Útil para restaurar backups baixados diretamente do Dashboard",
|
|
199
|
+
"help.commands.restoreFormats": "Formatos suportados:",
|
|
200
|
+
"help.commands.restoreFormats1": "• .backup.gz (compactado) - Descompacta automaticamente",
|
|
201
|
+
"help.commands.restoreFormats2": "• .backup (descompactado) - Restaura diretamente",
|
|
202
|
+
|
|
203
|
+
"help.commands.checkDesc": "Verificar integridade do projeto Supabase após restauração",
|
|
204
|
+
"help.commands.checkExamples": "Exemplos:",
|
|
205
|
+
"help.commands.checkExample1": "npx smoonb check",
|
|
206
|
+
"help.commands.checkExample1Desc": "# Verifica integridade e exibe relatório no console",
|
|
207
|
+
"help.commands.checkWhat": "O que é verificado:",
|
|
208
|
+
"help.commands.checkWhat1": "• Conexão com database",
|
|
209
|
+
"help.commands.checkWhat2": "• Extensões PostgreSQL instaladas",
|
|
210
|
+
"help.commands.checkWhat3": "• Tabelas criadas",
|
|
211
|
+
"help.commands.checkWhat4": "• Políticas RLS (Row Level Security)",
|
|
212
|
+
"help.commands.checkWhat5": "• Publicações Realtime",
|
|
213
|
+
"help.commands.checkWhat6": "• Buckets de Storage",
|
|
214
|
+
|
|
215
|
+
"help.commands.importDesc": "Importar arquivo .backup.gz e opcionalmente .storage.zip do Dashboard do Supabase",
|
|
216
|
+
"help.commands.importFile": "Caminho completo do arquivo .backup.gz a importar",
|
|
217
|
+
"help.commands.importStorage": "Caminho completo do arquivo .storage.zip a importar (opcional)",
|
|
218
|
+
"help.commands.importExamples": "Exemplos:",
|
|
219
|
+
"help.commands.importExample1": "npx smoonb import --file \"C:\\Downloads\\db_cluster-04-03-2024@14-16-59.backup.gz\"",
|
|
220
|
+
"help.commands.importExample1Desc": "# Importa apenas o arquivo de database",
|
|
221
|
+
"help.commands.importExample2": "npx smoonb import --file \"backup.backup.gz\" --storage \"meu-projeto.storage.zip\"",
|
|
222
|
+
"help.commands.importExample2Desc": "# Importa database e storage juntos",
|
|
223
|
+
"help.commands.importFormats": "Formato dos arquivos:",
|
|
224
|
+
"help.commands.importFormats1": "• Backup: db_cluster-DD-MM-YYYY@HH-MM-SS.backup.gz (obrigatório)",
|
|
225
|
+
"help.commands.importFormats2": "• Storage: *.storage.zip (opcional)",
|
|
226
|
+
"help.commands.importImportant": "Importante:",
|
|
227
|
+
"help.commands.importImportant1": "• O arquivo de backup é obrigatório",
|
|
228
|
+
"help.commands.importImportant2": "• O arquivo de storage é opcional e depende de um backup",
|
|
229
|
+
"help.commands.importImportant3": "• Ambos os arquivos serão copiados para a mesma pasta de backup",
|
|
230
|
+
"help.commands.importImportant4": "• O backup importado ficará disponível para o comando restore",
|
|
231
|
+
"help.commands.importImportant5": "• Use caminhos absolutos ou relativos",
|
|
232
|
+
|
|
233
|
+
"quickHelp.title": "COMANDOS PRINCIPAIS:",
|
|
234
|
+
"quickHelp.backupTitle": "Backup completo:",
|
|
235
|
+
"quickHelp.backupDesc": "npx smoonb backup # Backup completo interativo usando Docker",
|
|
236
|
+
"quickHelp.restoreTitle": "Restauração completa:",
|
|
237
|
+
"quickHelp.restoreDesc": "npx smoonb restore # Restauração interativa usando psql (Docker)",
|
|
238
|
+
"quickHelp.checkTitle": "Verificação pós-restore:",
|
|
239
|
+
"quickHelp.checkDesc": "npx smoonb check # Verifica integridade do projeto",
|
|
240
|
+
"quickHelp.configuration": "CONFIGURAÇÃO:",
|
|
241
|
+
"quickHelp.configurationDesc": "Configure o arquivo .env.local na raiz do projeto com suas credenciais Supabase. O smoonb irá mapear as variáveis interativamente na primeira execução.",
|
|
242
|
+
"quickHelp.tokenTitle": "PERSONAL ACCESS TOKEN (OBRIGATÓRIO):",
|
|
243
|
+
"quickHelp.tokenDesc": "Para Management API (Edge Functions, Auth Settings, Storage):",
|
|
244
|
+
"quickHelp.tokenStep1": "1. Acesse: https://supabase.com/dashboard/account/tokens",
|
|
245
|
+
"quickHelp.tokenStep2": "2. Clique em \"Generate new token\"",
|
|
246
|
+
"quickHelp.tokenStep3": "3. Copie o token (formato: sbp_...)",
|
|
247
|
+
"quickHelp.tokenStep4": "4. Adicione ao .env.local como SUPABASE_ACCESS_TOKEN",
|
|
248
|
+
"quickHelp.update": "ATUALIZAR PARA ÚLTIMA VERSÃO:",
|
|
249
|
+
"quickHelp.updateCommand": "npm install smoonb@latest"
|
|
250
|
+
}
|
|
251
|
+
|
package/src/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
const chalk = require('chalk');
|
|
9
9
|
const path = require('path');
|
|
10
10
|
const { showBetaBanner } = require('./utils/banner');
|
|
11
|
+
const { t } = require('./i18n');
|
|
11
12
|
|
|
12
13
|
// Exportar comandos
|
|
13
14
|
const backupCommand = require('./commands/backup');
|
|
@@ -58,31 +59,31 @@ function showLicenseInfo() {
|
|
|
58
59
|
* Informações de ajuda rápida
|
|
59
60
|
*/
|
|
60
61
|
function showQuickHelp() {
|
|
62
|
+
const getT = global.smoonbI18n?.t || t;
|
|
61
63
|
console.log(chalk.cyan.bold(`
|
|
62
|
-
🚀
|
|
64
|
+
🚀 ${getT('quickHelp.title')}
|
|
63
65
|
|
|
64
|
-
📊
|
|
65
|
-
|
|
66
|
+
📊 ${getT('quickHelp.backupTitle')}
|
|
67
|
+
${getT('quickHelp.backupDesc')}
|
|
66
68
|
|
|
67
|
-
🔄
|
|
68
|
-
|
|
69
|
+
🔄 ${getT('quickHelp.restoreTitle')}
|
|
70
|
+
${getT('quickHelp.restoreDesc')}
|
|
69
71
|
|
|
70
|
-
🔍
|
|
71
|
-
|
|
72
|
+
🔍 ${getT('quickHelp.checkTitle')}
|
|
73
|
+
${getT('quickHelp.checkDesc')}
|
|
72
74
|
|
|
73
|
-
📋
|
|
74
|
-
|
|
75
|
-
O smoonb irá mapear as variáveis interativamente na primeira execução.
|
|
75
|
+
📋 ${getT('quickHelp.configuration')}
|
|
76
|
+
${getT('quickHelp.configurationDesc')}
|
|
76
77
|
|
|
77
|
-
🔑
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
🔑 ${getT('quickHelp.tokenTitle')}
|
|
79
|
+
${getT('quickHelp.tokenDesc')}
|
|
80
|
+
${getT('quickHelp.tokenStep1')}
|
|
81
|
+
${getT('quickHelp.tokenStep2')}
|
|
82
|
+
${getT('quickHelp.tokenStep3')}
|
|
83
|
+
${getT('quickHelp.tokenStep4')}
|
|
83
84
|
|
|
84
|
-
🔄
|
|
85
|
-
|
|
85
|
+
🔄 ${getT('quickHelp.update')}
|
|
86
|
+
${getT('quickHelp.updateCommand')}
|
|
86
87
|
`));
|
|
87
88
|
}
|
|
88
89
|
|
package/src/utils/banner.js
CHANGED
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
const chalk = require('chalk');
|
|
2
|
+
const { t } = require('../i18n');
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Banner principal do smoonb
|
|
5
6
|
*/
|
|
6
7
|
function showBetaBanner() {
|
|
7
|
-
|
|
8
|
-
console.log(chalk.white('Backup e restauração: completo e simples, como deveria ser\n'));
|
|
8
|
+
const getT = global.smoonbI18n?.t || t;
|
|
9
9
|
|
|
10
|
-
console.log(chalk.cyan.bold(
|
|
11
|
-
console.log(chalk.white(
|
|
12
|
-
console.log(chalk.white(' ✅ Database Extensions and Settings'));
|
|
13
|
-
console.log(chalk.white(' ✅ Custom Roles'));
|
|
14
|
-
console.log(chalk.white(' ✅ Edge Functions'));
|
|
15
|
-
console.log(chalk.white(' ✅ Auth Settings'));
|
|
16
|
-
console.log(chalk.white(' ✅ Storage Buckets'));
|
|
17
|
-
console.log(chalk.white(' ✅ Realtime Settings'));
|
|
18
|
-
console.log(chalk.white(' ✅ Supabase .temp'));
|
|
19
|
-
console.log(chalk.white(' ✅ Migrations\n'));
|
|
10
|
+
console.log(chalk.cyan.bold(`\n🚀 ${getT('app.title')}\n`));
|
|
11
|
+
console.log(chalk.white(`${getT('app.tagline')}\n`));
|
|
20
12
|
|
|
21
|
-
console.log(chalk.
|
|
22
|
-
console.log(chalk.
|
|
23
|
-
console.log(chalk.
|
|
24
|
-
console.log(chalk.
|
|
13
|
+
console.log(chalk.cyan.bold(`📦 ${getT('backup.components')}\n`));
|
|
14
|
+
console.log(chalk.white(` ✅ ${getT('backup.database')}`));
|
|
15
|
+
console.log(chalk.white(` ✅ ${getT('backup.extensions')}`));
|
|
16
|
+
console.log(chalk.white(` ✅ ${getT('backup.roles')}`));
|
|
17
|
+
console.log(chalk.white(` ✅ ${getT('backup.functions')}`));
|
|
18
|
+
console.log(chalk.white(` ✅ ${getT('backup.auth')}`));
|
|
19
|
+
console.log(chalk.white(` ✅ ${getT('backup.storage')}`));
|
|
20
|
+
console.log(chalk.white(` ✅ ${getT('backup.realtime')}`));
|
|
21
|
+
console.log(chalk.white(` ✅ ${getT('backup.temp')}`));
|
|
22
|
+
console.log(chalk.white(` ✅ ${getT('backup.migrations')}\n`));
|
|
23
|
+
|
|
24
|
+
console.log(chalk.white(`🏢 ${getT('app.developedBy')}`));
|
|
25
|
+
console.log(chalk.cyan(`🌐 ${getT('app.website')}`));
|
|
26
|
+
console.log(chalk.cyan(`📖 ${getT('app.documentation')}`));
|
|
27
|
+
console.log(chalk.cyan(`🐛 ${getT('app.issues')}\n`));
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
module.exports = { showBetaBanner };
|
package/src/utils/prompt.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
const readline = require('readline');
|
|
2
|
+
const { t } = require('../i18n');
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Função helper para fazer perguntas de confirmação customizadas
|
|
5
6
|
* Mostra (S/n) ou (s/N) em português em vez de (Y/n) ou (y/N)
|
|
6
7
|
*/
|
|
7
8
|
async function confirm(question, defaultYes = true) {
|
|
9
|
+
const getT = global.smoonbI18n?.t || t;
|
|
10
|
+
|
|
8
11
|
const rl = readline.createInterface({
|
|
9
12
|
input: process.stdin,
|
|
10
13
|
output: process.stdout
|
|
11
14
|
});
|
|
12
15
|
|
|
13
|
-
const promptText = defaultYes ? '
|
|
16
|
+
const promptText = defaultYes ? getT('prompt.confirmYes') : getT('prompt.confirmNo');
|
|
14
17
|
const fullQuestion = `${question} ${promptText}: `;
|
|
15
18
|
|
|
16
19
|
return new Promise((resolve) => {
|