firebase-secrets-cli 0.1.3 → 1.0.1

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
@@ -50,16 +50,10 @@ La CLI propone una lista di chiavi lette da `functions/src/config/secret.ts`, ma
50
50
 
51
51
  ## Installazione
52
52
 
53
- ### Globale (da npm)
53
+ ### npm
54
54
 
55
55
  ```bash
56
- npm i -g firebase-secrets-cli
57
- ```
58
-
59
- ### Esecuzione senza installare (consigliato per test)
60
-
61
- ```bash
62
- npx firebase-secrets-cli
56
+ npm i -D firebase-secrets-cli
63
57
  ```
64
58
 
65
59
  ## Comandi disponibili
@@ -67,8 +61,9 @@ npx firebase-secrets-cli
67
61
  Il pacchetto espone questi binari (da `package.json`):
68
62
 
69
63
  - `firebase-secrets` → CLI principale
70
- - `cic:index` → entrypoint secondario (utility/launcher)
71
- - `cic:bump` → utility di bump versione
64
+ - `cic-index` → entrypoint secondario (utility/launcher)
65
+ - `cic-bump` → utility di bump versione
66
+ - `cic-push` → utility per aggiornare `CHANGELOG.md` e gestire commit/tag/push Git
72
67
 
73
68
  Esempi:
74
69
 
@@ -77,28 +72,19 @@ Esempi:
77
72
  npx firebase-secrets
78
73
 
79
74
  # utility index (se prevista nel tuo flusso)
80
- npx cic:index
75
+ npx cic-index
81
76
 
82
77
  # bump versione (se prevista nel tuo flusso)
83
- npx cic:bump
84
- ```
85
-
86
- ## Sviluppo locale
78
+ npx cic-bump
87
79
 
88
- Script disponibili:
89
-
90
- ```bash
91
- npm run build # compila TypeScript in dist/
92
- npm run start # build + esegue dist/cic-index.js
93
- npm run pack # build + npm pack
94
- npm run deploy # build + bump + pack + publish
80
+ # push changelog + git (se prevista nel tuo flusso)
81
+ npx cic-push
95
82
  ```
96
83
 
97
- Compilazione: TypeScript con `module`/`moduleResolution` **NodeNext**, output in `dist/`.
98
-
99
84
  ## Troubleshooting
100
85
 
101
86
  ### “Non trova functions/.secret.local o secret.ts”
87
+
102
88
  - Verifica di lanciare il comando dalla **root del repo** (dove esiste `functions/`).
103
89
  - In caso di repo senza i file, la CLI dovrebbe poterli creare/aggiornare quando esegui operazioni tipo `set`/`update` (dipende dall’implementazione). Se non ci sono controlli ancora, aggiungerli è una buona prossima patch:
104
90
  - se manca `functions/` → errore chiaro
@@ -106,7 +92,9 @@ Compilazione: TypeScript con `module`/`moduleResolution` **NodeNext**, output in
106
92
  - se manca `secret.ts` → scaffolding minimale del registry
107
93
 
108
94
  ### Permessi Firebase
95
+
109
96
  Se i comandi `firebase functions:secrets:*` falliscono:
97
+
110
98
  - `firebase login`
111
99
  - seleziona il progetto corretto (`firebase use <alias|projectId>`)
112
100
  - verifica di avere i permessi IAM necessari
@@ -1,6 +1,8 @@
1
+ #!/usr/bin/env node
1
2
  import fs from 'node:fs';
2
3
  import path from 'node:path';
3
4
  import { ensureFileExists, getProjectRoot } from './utils/dir.js';
5
+ import { colorizer } from './utils/logger.js';
4
6
  function bumpPatch(version) {
5
7
  const parts = version.split('.').map((n) => Number(n));
6
8
  if (parts.length !== 3 || parts.some((n) => Number.isNaN(n))) {
@@ -34,10 +36,10 @@ export function bumpRootPackageVersion() {
34
36
  // esecuzione diretta (cli entrypoint)
35
37
  try {
36
38
  const v = bumpRootPackageVersion();
37
- console.log(`✔ Root package.json version bumped to ${v}`);
39
+ console.log(`${colorizer('✔', 'green')} Root package.json version bumped to ${colorizer(v, 'magenta')}`);
38
40
  }
39
41
  catch (err) {
40
42
  console.error(err?.message ?? err);
41
43
  process.exit(1);
42
44
  }
43
- //# sourceMappingURL=bump.js.map
45
+ //# sourceMappingURL=cic-bump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cic-bump.js","sourceRoot":"","sources":["../src/cic-bump.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,SAAS,SAAS,CAAC,OAAe;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,oBAAoB,CAAC,CAAA;IAC9F,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,sBAAsB;IAClC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;IAChC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;IAE1D,gBAAgB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA;IAEjD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IAEpD,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,eAAe,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,gDAAgD,eAAe,EAAE,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAA;IAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IAExC,GAAG,CAAC,OAAO,GAAG,UAAU,CAAA;IAExB,6DAA6D;IAC7D,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;IAE9E,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,sCAAsC;AACtC,IAAI,CAAC;IACD,MAAM,CAAC,GAAG,sBAAsB,EAAE,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAC,OAAO,CAAC,wCAAwC,SAAS,CAAC,CAAC,EAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AAC1G,CAAC;AAAC,OAAO,GAAQ,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAA;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
package/dist/cic-index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import select from '@inquirer/select';
3
3
  import inquirer from 'inquirer';
4
4
  import { initFirebaseSecretsProject } from './utils/init.js';
5
+ import { colorizer } from './utils/logger.js';
5
6
  async function main() {
6
7
  console.log('✔ cic CLI');
7
8
  const action = await select({
@@ -9,6 +10,8 @@ async function main() {
9
10
  choices: [
10
11
  { name: 'Init (Firebase Secrets)', value: 'init' },
11
12
  { name: 'Firebase Secrets Manager', value: 'firebase-secrets' },
13
+ { name: 'Bump version (package.json)', value: 'bump' },
14
+ { name: 'Push (changelog + git)', value: 'push' },
12
15
  { name: 'Exit', value: 'exit' },
13
16
  ],
14
17
  });
@@ -42,12 +45,17 @@ async function main() {
42
45
  }
43
46
  if (action === 'firebase-secrets') {
44
47
  await import('./firebase-secrets.js');
48
+ return; // comportamento voluto
49
+ }
50
+ if (action === 'bump') {
51
+ await import('./cic-bump.js');
52
+ return;
53
+ }
54
+ if (action === 'push') {
55
+ await import('./cic-push.js');
45
56
  return;
46
57
  }
47
- console.log('bye');
58
+ console.log(`${colorizer('A presto!', 'brightGreen')} 👋`);
48
59
  }
49
- main().catch((err) => {
50
- console.error('❌ Errore:', err instanceof Error ? err.message : err);
51
- process.exit(1);
52
- });
60
+ main().catch((err) => { console.error('❌ Errore:', err instanceof Error ? err.message : err); process.exit(1); });
53
61
  //# sourceMappingURL=cic-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cic-index.js","sourceRoot":"","sources":["../src/cic-index.ts"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,kBAAkB,CAAA;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAI5D,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAExB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAS;QAChC,OAAO,EAAE,MAAM;QACf,OAAO,EAAE;YACL,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,EAAE;YAClD,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,kBAAkB,EAAE;YAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SAClC;KACJ,CAAC,CAAA;IAEF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAkB;YAClD;gBACI,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,IAAI;gBACV,OAAO,EACH,oIAAoI;gBACxI,OAAO,EAAE,KAAK;aACjB;SACJ,CAAC,CAAA;QAEF,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACxB,OAAM;QACV,CAAC;QAED,MAAM,GAAG,GAAG,0BAA0B,EAAE,CAAA;QAExC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QAEjC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACxB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;YAC7C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3D,CAAC;QACD,OAAM;IACV,CAAC;IAED,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;QAChC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;QACrC,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"cic-index.js","sourceRoot":"","sources":["../src/cic-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { execSync } from 'node:child_process';
5
+ import { createInterface } from 'node:readline/promises';
6
+ import { stdin as input, stdout as output } from 'node:process';
7
+ import { ensureFileExists, getProjectRoot } from './utils/dir.js';
8
+ import { colorizer } from './utils/logger.js';
9
+ function safeCommitMessage(version, description) {
10
+ // evita di rompere il comando git con doppi apici o newline
11
+ const clean = description.replace(/\s+/g, ' ').trim().replace(/"/g, '\\"');
12
+ return `v${version} – ${clean}`;
13
+ }
14
+ async function askLine(question) {
15
+ const rl = createInterface({ input, output });
16
+ try {
17
+ const ans = await rl.question(question);
18
+ return ans ?? '';
19
+ }
20
+ finally {
21
+ await rl.close();
22
+ }
23
+ }
24
+ async function askYesNo(question, defaultYes = true) {
25
+ const suffix = defaultYes ? '(s)' : '(n)';
26
+ const raw = await askLine(`${question} [s/n] ${suffix}: `);
27
+ const v = raw.trim().toLowerCase();
28
+ if (!v)
29
+ return defaultYes;
30
+ if (v.startsWith('n'))
31
+ return false;
32
+ return true;
33
+ }
34
+ function prependChangelog(changelogPath, entry) {
35
+ let existing = '';
36
+ if (fs.existsSync(changelogPath)) {
37
+ existing = fs.readFileSync(changelogPath, 'utf8');
38
+ }
39
+ fs.writeFileSync(changelogPath, entry + existing, 'utf8');
40
+ }
41
+ function runGit(cmd, cwd) {
42
+ execSync(cmd, { stdio: 'inherit', cwd });
43
+ }
44
+ async function main() {
45
+ const rootDir = getProjectRoot();
46
+ const packageJsonPath = path.join(rootDir, 'package.json');
47
+ const changelogPath = path.join(rootDir, 'CHANGELOG.md');
48
+ ensureFileExists(packageJsonPath, 'package.json');
49
+ let pkg;
50
+ try {
51
+ pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
52
+ }
53
+ catch {
54
+ throw new Error(`❌ package.json is not valid JSON: ${packageJsonPath}`);
55
+ }
56
+ const version = pkg?.version;
57
+ if (!version || typeof version !== 'string') {
58
+ throw new Error(`❌ package.json has no valid "version" field: ${packageJsonPath}`);
59
+ }
60
+ console.log(`${colorizer('▶', 'cyan')} Project root: ${colorizer(rootDir, 'magenta')}`);
61
+ console.log(`${colorizer('▶', 'cyan')} Version: ${colorizer(version, 'magenta')}`);
62
+ const descriptionRaw = await askLine('✏️ Descrizione per il changelog (invio per saltare): ');
63
+ const hasDescription = descriptionRaw.trim().length > 0;
64
+ const description = hasDescription ? descriptionRaw.trim() : 'Nessuna descrizione fornita.';
65
+ const today = new Date().toISOString().slice(0, 10);
66
+ const entry = `## v${version} - ${today}
67
+
68
+ ${description}
69
+
70
+ ---
71
+
72
+ `;
73
+ prependChangelog(changelogPath, entry);
74
+ console.log(`${colorizer('📝', 'green')} Changelog aggiornato: ${colorizer(changelogPath, 'magenta')}`);
75
+ if (!hasDescription) {
76
+ console.log(`${colorizer('⏭', 'yellow')} Nessuna descrizione: salto commit/tag/push Git`);
77
+ console.log(`${colorizer('✔', 'green')} cic-push completato`);
78
+ return;
79
+ }
80
+ const doCommit = await askYesNo('📦 Vuoi fare il commit su Git?', true);
81
+ if (!doCommit) {
82
+ console.log(`${colorizer('😣', 'yellow')} Commit Git saltato`);
83
+ console.log(`${colorizer('✔', 'green')} cic-push completato`);
84
+ return;
85
+ }
86
+ // Git actions
87
+ try {
88
+ console.log(`${colorizer('🔧', 'cyan')} git add .`);
89
+ runGit('git add .', rootDir);
90
+ const commitMsg = safeCommitMessage(version, description);
91
+ console.log(`${colorizer('🔧', 'cyan')} git commit -m "${commitMsg}"`);
92
+ runGit(`git commit -m "${commitMsg}"`, rootDir);
93
+ console.log(`${colorizer('🔖', 'cyan')} git tag v${version}`);
94
+ runGit(`git tag v${version}`, rootDir);
95
+ const doPush = await askYesNo('🚀 Vuoi anche fare git push?', true);
96
+ if (doPush) {
97
+ console.log(`${colorizer('🚀', 'cyan')} git push`);
98
+ runGit('git push', rootDir);
99
+ console.log(`${colorizer('🚀', 'cyan')} git push --tags`);
100
+ runGit('git push --tags', rootDir);
101
+ console.log(`${colorizer('🚀', 'green')} Push completato!`);
102
+ }
103
+ else {
104
+ console.log(`${colorizer('⏭', 'yellow')} Push saltato`);
105
+ }
106
+ }
107
+ catch (err) {
108
+ throw new Error(`❌ Errore durante operazioni Git: ${err?.message ?? err}`);
109
+ }
110
+ console.log(`${colorizer('✔', 'green')} cic-push completato`);
111
+ }
112
+ // entrypoint
113
+ main().catch((err) => {
114
+ console.error(err?.message ?? err);
115
+ process.exit(1);
116
+ });
117
+ //# sourceMappingURL=cic-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cic-push.js","sourceRoot":"","sources":["../src/cic-push.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,22 @@
1
1
  const RESET = '\x1b[0m';
2
2
  const DIM = '\x1b[2m';
3
3
  const COLORS = {
4
- black: '\x1b[30m',
5
- red: '\x1b[31m',
6
- green: '\x1b[32m',
7
- yellow: '\x1b[33m',
8
- blue: '\x1b[34m',
9
- magenta: '\x1b[35m',
10
- cyan: '\x1b[36m',
11
- white: '\x1b[37m',
12
- gray: '\x1b[90m',
13
- brightRed: '\x1b[91m',
14
- brightGreen: '\x1b[92m',
15
- brightYellow: '\x1b[93m',
16
- brightBlue: '\x1b[94m',
17
- brightMagenta: '\x1b[95m',
18
- brightCyan: '\x1b[96m',
19
- brightWhite: '\x1b[97m'
4
+ black: '\x1b[30m', // #000000
5
+ red: '\x1b[31m', // #800000
6
+ green: '\x1b[32m', // #008000
7
+ yellow: '\x1b[33m', // #808000
8
+ blue: '\x1b[34m', // #000080
9
+ magenta: '\x1b[35m', // #800080
10
+ cyan: '\x1b[36m', // #008080
11
+ white: '\x1b[37m', // #c0c0c0
12
+ gray: '\x1b[90m', // #808080
13
+ brightRed: '\x1b[91m', // #ff0000
14
+ brightGreen: '\x1b[92m', // #00ff00
15
+ brightYellow: '\x1b[93m', // #ffff00
16
+ brightBlue: '\x1b[94m', // #0000ff
17
+ brightMagenta: '\x1b[95m', // #ff00ff
18
+ brightCyan: '\x1b[96m', // #00ffff
19
+ brightWhite: '\x1b[97m', // #ffffff
20
20
  };
21
21
  export function colorizer(text, color, dim = false) {
22
22
  const c = COLORS[color];
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,SAAS,CAAA;AACvB,MAAM,GAAG,GAAG,SAAS,CAAA;AAErB,MAAM,MAAM,GAAG;IACX,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;CACjB,CAAA;AAIV,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAe,EAAE,GAAG,GAAG,KAAK;IAChE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACxB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,QAAkB,MAAM,IAAU,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7I,MAAM,UAAU,EAAE,CAAC,QAAkB,MAAM,IAAU,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC,CAAA,CAAC,CAAC;AAEvI,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,KAAa;IACtD,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;AACtG,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,SAAS,CAAA;AACvB,MAAM,GAAG,GAAG,SAAS,CAAA;AAErB,MAAM,MAAM,GAAG;IACX,KAAK,EAAE,UAAU,EAAS,UAAU;IACpC,GAAG,EAAE,UAAU,EAAW,UAAU;IACpC,KAAK,EAAE,UAAU,EAAS,UAAU;IACpC,MAAM,EAAE,UAAU,EAAQ,UAAU;IACpC,IAAI,EAAE,UAAU,EAAU,UAAU;IACpC,OAAO,EAAE,UAAU,EAAO,UAAU;IACpC,IAAI,EAAE,UAAU,EAAU,UAAU;IACpC,KAAK,EAAE,UAAU,EAAS,UAAU;IAEpC,IAAI,EAAE,UAAU,EAAU,UAAU;IACpC,SAAS,EAAE,UAAU,EAAK,UAAU;IACpC,WAAW,EAAE,UAAU,EAAG,UAAU;IACpC,YAAY,EAAE,UAAU,EAAE,UAAU;IACpC,UAAU,EAAE,UAAU,EAAI,UAAU;IACpC,aAAa,EAAE,UAAU,EAAC,UAAU;IACpC,UAAU,EAAE,UAAU,EAAI,UAAU;IACpC,WAAW,EAAE,UAAU,EAAG,UAAU;CAC9B,CAAA;AAKV,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAe,EAAE,GAAG,GAAG,KAAK;IAChE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACxB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,QAAkB,MAAM,IAAU,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7I,MAAM,UAAU,EAAE,CAAC,QAAkB,MAAM,IAAU,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC,CAAA,CAAC,CAAC;AAEvI,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,KAAa;IACtD,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;AACtG,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "firebase-secrets-cli",
3
- "version": "0.1.3",
3
+ "version": "1.0.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "firebase-secrets": "./dist/firebase-secrets.js",
7
7
  "cic-index": "./dist/cic-index.js",
8
- "cic-bump": "./dist/bump.js"
8
+ "cic-bump": "./dist/cic-bump.js",
9
+ "cic-push": "./dist/cic-push.js"
9
10
  },
10
11
  "files": [
11
12
  "dist"
@@ -14,7 +15,11 @@
14
15
  "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
15
16
  "build": "npm run clean && tsc -p tsconfig.json",
16
17
  "pack": "npm run build && npm pack",
17
- "deploy": "npm run build && node scripts/bump-version.cjs && npm pack && npm publish --access public",
18
+ "pack-bump": "npm run build && node scripts/bump-version.cjs && npm pack",
19
+ "cic-push": "npm run build && npm pack && node scripts/git-push.cjs",
20
+ "deploy": "npm run build && node scripts/bump-version.cjs && npm pack && node scripts/git-push.cjs && npm publish --access public",
21
+ "only-deploy": "npm publish --access public",
22
+ "deploy-no-bump": "npm run build && npm pack && node scripts/git-push.cjs && npm publish --access public",
18
23
  "start": "npm run build && node dist/cic-index.js"
19
24
  },
20
25
  "dependencies": {
package/dist/bump.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bump.js","sourceRoot":"","sources":["../src/bump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEjE,SAAS,SAAS,CAAC,OAAe;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,oBAAoB,CAAC,CAAA;IAC9F,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,sBAAsB;IAClC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;IAChC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;IAE1D,gBAAgB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA;IAEjD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IAEpD,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,eAAe,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,gDAAgD,eAAe,EAAE,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAA;IAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IAExC,GAAG,CAAC,OAAO,GAAG,UAAU,CAAA;IAExB,6DAA6D;IAC7D,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;IAE9E,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,sCAAsC;AACtC,IAAI,CAAC;IACD,MAAM,CAAC,GAAG,sBAAsB,EAAE,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAA;AAC7D,CAAC;AAAC,OAAO,GAAQ,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAA;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}