brasil-ceps-offline 2.1.1 → 2.1.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.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const download_db_1 = require("../scripts/download-db");
10
+ const VERSION_FILE = path_1.default.join(__dirname, '..', '..', '.db', 'version.json');
11
+ const DB_PATH = path_1.default.join(__dirname, '..', '..', '.db', 'ceps.sqlite');
12
+ const COMMANDS = ['sync', 'status', 'help'];
13
+ function printHelp() {
14
+ console.log(`
15
+ brasil-ceps-offline — CLI de gerenciamento do banco de dados
16
+
17
+ Uso:
18
+ npx brasil-ceps-offline <comando>
19
+
20
+ Comandos:
21
+ sync Baixa ou atualiza o banco de dados para a versão mais recente
22
+ status Exibe informações sobre o banco de dados instalado
23
+ help Exibe esta mensagem de ajuda
24
+
25
+ Exemplos:
26
+ npx brasil-ceps-offline sync
27
+ npx brasil-ceps-offline status
28
+ `.trim());
29
+ }
30
+ function printStatus() {
31
+ const dbExists = fs_1.default.existsSync(DB_PATH);
32
+ if (!dbExists) {
33
+ console.log('[brasil-ceps-offline] ❌ Banco de dados não encontrado.');
34
+ console.log('[brasil-ceps-offline] Execute: npx brasil-ceps-offline sync');
35
+ process.exit(1);
36
+ }
37
+ const stats = fs_1.default.statSync(DB_PATH);
38
+ const sizeMb = (stats.size / 1024 / 1024).toFixed(1);
39
+ let tag = 'desconhecida';
40
+ let downloadedAt = 'desconhecida';
41
+ if (fs_1.default.existsSync(VERSION_FILE)) {
42
+ try {
43
+ const cache = JSON.parse(fs_1.default.readFileSync(VERSION_FILE, 'utf-8'));
44
+ tag = cache.tag ?? tag;
45
+ downloadedAt = cache.downloadedAt ?? downloadedAt;
46
+ }
47
+ catch {
48
+ // version.json corrompido — ignora
49
+ }
50
+ }
51
+ console.log('[brasil-ceps-offline] ✅ Banco de dados instalado');
52
+ console.log(`[brasil-ceps-offline] Versão: ${tag}`);
53
+ console.log(`[brasil-ceps-offline] Tamanho: ${sizeMb} MB`);
54
+ console.log(`[brasil-ceps-offline] Caminho: ${DB_PATH}`);
55
+ console.log(`[brasil-ceps-offline] Baixado em: ${downloadedAt}`);
56
+ }
57
+ async function main() {
58
+ const command = (process.argv[2] ?? 'help');
59
+ switch (command) {
60
+ case 'sync':
61
+ await (0, download_db_1.downloadDatabase)();
62
+ break;
63
+ case 'status':
64
+ printStatus();
65
+ break;
66
+ case 'help':
67
+ printHelp();
68
+ break;
69
+ default:
70
+ console.error(`[brasil-ceps-offline] Comando desconhecido: "${command}"`);
71
+ console.error(`[brasil-ceps-offline] Comandos válidos: ${COMMANDS.join(', ')}`);
72
+ printHelp();
73
+ process.exit(1);
74
+ }
75
+ }
76
+ main().catch((err) => {
77
+ console.error(`[brasil-ceps-offline] ❌ ${err.message}`);
78
+ process.exit(1);
79
+ });
@@ -1 +1,2 @@
1
- export {};
1
+ declare function downloadDatabase(): Promise<void>;
2
+ export { downloadDatabase };
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.downloadDatabase = downloadDatabase;
6
7
  const fs_1 = __importDefault(require("fs"));
7
8
  const path_1 = __importDefault(require("path"));
8
9
  const promises_1 = require("stream/promises");
@@ -153,7 +154,11 @@ async function downloadDatabase() {
153
154
  log('🚀 Banco de dados instalado via fallback.');
154
155
  }
155
156
  }
156
- downloadDatabase().catch((err) => {
157
- console.error(`[brasil-ceps-offline] Erro crítico no instalador: ${err.message}`);
158
- process.exit(1);
159
- });
157
+ // Executa automaticamente apenas quando invocado diretamente (postinstall).
158
+ // Quando importado pelo CLI ou pelos testes, não executa.
159
+ if (require.main === module) {
160
+ downloadDatabase().catch((err) => {
161
+ console.error(`[brasil-ceps-offline] ❌ Erro crítico no instalador: ${err.message}`);
162
+ process.exit(1);
163
+ });
164
+ }
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "brasil-ceps-offline",
3
- "version": "2.1.1",
3
+ "version": "2.1.2",
4
4
  "description": "Motor de Inteligência Geográfica Offline para CEPs brasileiros — dados do Censo IBGE 2022 com IBGE, DDD, fuso horário e coordenadas",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
8
- "brasil-ceps-offline": "dist/bin/sync.js"
8
+ "brasil-ceps-offline": "dist/bin/cli.js"
9
9
  },
10
10
  "scripts": {
11
11
  "postinstall": "node dist/scripts/download-db.js",
12
- "build": "tsc",
12
+ "build": "tsc && chmod +x dist/bin/cli.js",
13
13
  "build:db": "ts-node scripts/builder/builder.ts",
14
14
  "builder": "ts-node src/builder.ts",
15
15
  "builder:compress": "gzip -c ./.db/ceps.sqlite > ./.db/brasil-ceps.sqlite.gz",
16
16
  "dev": "tsc --watch",
17
17
  "test": "jest",
18
18
  "prepare": "npm run build",
19
- "sync": "node dist/bin/sync.js",
20
- "sync:status": "node dist/bin/sync.js status",
19
+ "sync": "node dist/bin/cli.js sync",
20
+ "sync:status": "node dist/bin/cli.js status",
21
21
  "example": "ts-node examples/usage.ts",
22
22
  "ai:update": "ts-node src/scripts/ai-updater.ts",
23
23
  "hunt": "ts-node src/scripts/gap-hunter.ts",