@prisma-psm/core 1.0.13 → 1.0.15
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/package.json +3 -2
- package/src/driver.d.ts +5 -9
- package/src/driver.d.ts.map +1 -1
- package/src/driver.ts +10 -4
- package/src/launcher/commands/backup.d.ts +5 -0
- package/src/launcher/commands/backup.d.ts.map +1 -0
- package/src/launcher/commands/backup.js +28 -0
- package/src/launcher/commands/backup.js.map +1 -0
- package/src/launcher/commands/backup.ts +31 -0
- package/src/tools/backup.d.ts +8 -0
- package/src/tools/backup.d.ts.map +1 -0
- package/src/tools/backup.js +86 -0
- package/src/tools/backup.js.map +1 -0
- package/src/tools/backup.ts +68 -0
- package/src/tools/commit.d.ts.map +1 -1
- package/src/tools/commit.js +24 -55
- package/src/tools/commit.js.map +1 -1
- package/src/tools/commit.ts +30 -54
- package/src/utils/fs.d.ts +5 -0
- package/src/utils/fs.d.ts.map +1 -0
- package/src/utils/fs.js +85 -0
- package/src/utils/fs.js.map +1 -0
- package/src/utils/fs.ts +59 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-psm/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.15",
|
|
4
4
|
"description": "PSM - Prisma SAFE MIGRATE: ferramenta CLI para migração segura de bancos Prisma com suporte avançado.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
],
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/yaml": "^1.9.6",
|
|
48
|
-
"@types/yargs": "^17.0.33"
|
|
48
|
+
"@types/yargs": "^17.0.33",
|
|
49
|
+
"tar": "^7.4.3"
|
|
49
50
|
}
|
|
50
51
|
}
|
package/src/driver.d.ts
CHANGED
|
@@ -127,10 +127,15 @@ export interface PSMMigrated {
|
|
|
127
127
|
success?: boolean;
|
|
128
128
|
migrated?: Migrated[];
|
|
129
129
|
}
|
|
130
|
+
export interface PSMDumpResponse {
|
|
131
|
+
error?: Error;
|
|
132
|
+
output?: string;
|
|
133
|
+
}
|
|
130
134
|
export interface PSMMigrator {
|
|
131
135
|
core(): Promise<PSMMigrationResult>;
|
|
132
136
|
test(): Promise<PSMMigrationResult>;
|
|
133
137
|
migrate(): Promise<PSMMigrationResult>;
|
|
138
|
+
dump(): Promise<PSMDumpResponse>;
|
|
134
139
|
}
|
|
135
140
|
export interface QueryBuilderResult {
|
|
136
141
|
sql: string;
|
|
@@ -168,10 +173,6 @@ export type PatchOptions<Props> = RegistryOptions<Props> & {
|
|
|
168
173
|
export type RevisionListener = {
|
|
169
174
|
onRegister?(error: Error, onRelease: () => void): void;
|
|
170
175
|
};
|
|
171
|
-
type SQLTemplate = (sqlTemplate: TemplateStringsArray, ...values: any[]) => QueryBuilderResult & {
|
|
172
|
-
sql: SQLTemplate;
|
|
173
|
-
joins(...builders: QueryBuilderResult[]): void;
|
|
174
|
-
};
|
|
175
176
|
export interface SqlPatch<Props> {
|
|
176
177
|
opts: RegistryOptions<Props> & PatchOptions<Props>;
|
|
177
178
|
str: string | QueryBuilderResult;
|
|
@@ -184,15 +185,10 @@ export interface PSMDriver {
|
|
|
184
185
|
generator: (opts: PSMParserOptions) => PSMGenerator;
|
|
185
186
|
migrator: (opts: PSMMigrationOptions) => PSMMigrator;
|
|
186
187
|
prepare: (model: ModelOptions) => Promise<any> | void;
|
|
187
|
-
sql: SQLTemplate;
|
|
188
|
-
joins(...builders: QueryBuilderResult[]): void;
|
|
189
|
-
patch<Props>(opts: PatchOptions<Props>, sql: QueryBuilderResult, listener?: RevisionListener): SqlPatch<Props>;
|
|
190
|
-
patchSQL<Props>(opts?: PatchOptions<Props>, listener?: RevisionListener): SQLTemplate;
|
|
191
188
|
}
|
|
192
189
|
export interface DriverConfigs {
|
|
193
190
|
driver: string;
|
|
194
191
|
url: string;
|
|
195
192
|
sys: string;
|
|
196
193
|
}
|
|
197
|
-
export {};
|
|
198
194
|
//# sourceMappingURL=driver.d.ts.map
|
package/src/driver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["driver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["driver.ts"],"names":[],"mappings":"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"}
|
package/src/driver.ts
CHANGED
|
@@ -140,10 +140,16 @@ export interface PSMMigrated {
|
|
|
140
140
|
migrated?:Migrated[]
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
export interface PSMDumpResponse {
|
|
144
|
+
error?:Error,
|
|
145
|
+
output?:string
|
|
146
|
+
}
|
|
147
|
+
|
|
143
148
|
export interface PSMMigrator {
|
|
144
149
|
core():Promise<PSMMigrationResult>,
|
|
145
150
|
test():Promise<PSMMigrationResult>,
|
|
146
151
|
migrate():Promise<PSMMigrationResult>,
|
|
152
|
+
dump():Promise<PSMDumpResponse>,
|
|
147
153
|
}
|
|
148
154
|
|
|
149
155
|
export interface QueryBuilderResult {
|
|
@@ -206,10 +212,10 @@ export interface PSMDriver {
|
|
|
206
212
|
generator:( opts:PSMParserOptions )=>PSMGenerator,
|
|
207
213
|
migrator:( opts:PSMMigrationOptions ) =>PSMMigrator,
|
|
208
214
|
prepare: ( model:ModelOptions )=>Promise<any>|void,
|
|
209
|
-
sql:SQLTemplate,
|
|
210
|
-
joins( ...builders:QueryBuilderResult[] ):void
|
|
211
|
-
patch <Props>(opts:PatchOptions<Props>, sql:QueryBuilderResult, listener?: RevisionListener):SqlPatch<Props>
|
|
212
|
-
patchSQL <Props>(opts?:PatchOptions<Props>, listener?: RevisionListener):SQLTemplate
|
|
215
|
+
// sql:SQLTemplate,
|
|
216
|
+
// joins( ...builders:QueryBuilderResult[] ):void
|
|
217
|
+
// patch <Props>(opts:PatchOptions<Props>, sql:QueryBuilderResult, listener?: RevisionListener):SqlPatch<Props>
|
|
218
|
+
// patchSQL <Props>(opts?:PatchOptions<Props>, listener?: RevisionListener):SQLTemplate
|
|
213
219
|
}
|
|
214
220
|
|
|
215
221
|
export interface DriverConfigs {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AACpC,OAAO,EAAS,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEzD,QAAA,MAAM,OAAO,EAAC,aAAa,CAAC,aAAa,EAAE,aAAa,CAwBvD,CAAA;AAED,SAAS,OAAO,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const backup_1 = require("../../tools/backup");
|
|
3
|
+
const command = {
|
|
4
|
+
command: "backup",
|
|
5
|
+
describe: "Backup current database",
|
|
6
|
+
builder: args => {
|
|
7
|
+
args.options("schema", {
|
|
8
|
+
type: "string",
|
|
9
|
+
alias: "s"
|
|
10
|
+
}).options("add", {
|
|
11
|
+
type: "boolean",
|
|
12
|
+
describe: "Adicionar no git"
|
|
13
|
+
}).options("label", {
|
|
14
|
+
type: "string",
|
|
15
|
+
alias: "l",
|
|
16
|
+
});
|
|
17
|
+
return args;
|
|
18
|
+
},
|
|
19
|
+
handler: (argv) => {
|
|
20
|
+
(0, backup_1.backup)(argv).then(value => {
|
|
21
|
+
console.log("Commited!");
|
|
22
|
+
}).catch(reason => {
|
|
23
|
+
console.error(reason);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
module.exports = command;
|
|
28
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["backup.ts"],"names":[],"mappings":";AACA,+CAAyD;AAEzD,MAAM,OAAO,GAA+C;IACxD,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,yBAAyB;IACnC,OAAO,EAAE,IAAI,CAAC,EAAE;QACZ,IAAI,CAAC,OAAO,CAAE,QAAQ,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;SACb,CAAC,CAAC,OAAO,CAAE,KAAK,EAAE;YACf,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,kBAAkB;SAC/B,CAAC,CAAC,OAAO,CAAE,OAAO,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;SACb,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,EAAC,CAAE,IAAI,EAAE,EAAE;QACd,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,GAAG,CAAE,WAAW,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAC,KAAK,CAAE,MAAM,CAAC,EAAE;YACf,OAAO,CAAC,KAAK,CAAE,MAAM,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACN,CAAC;CACJ,CAAA;AAED,iBAAS,OAAO,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {CommandModule} from "yargs";
|
|
2
|
+
import {backup, BackupOptions} from "../../tools/backup";
|
|
3
|
+
|
|
4
|
+
const command:CommandModule<BackupOptions, BackupOptions> = {
|
|
5
|
+
command: "backup",
|
|
6
|
+
describe: "Backup current database",
|
|
7
|
+
builder: args => {
|
|
8
|
+
args.options( "schema", {
|
|
9
|
+
type: "string",
|
|
10
|
+
alias: "s"
|
|
11
|
+
}).options( "add", {
|
|
12
|
+
type: "boolean",
|
|
13
|
+
describe: "Adicionar no git"
|
|
14
|
+
}).options( "label", {
|
|
15
|
+
type: "string",
|
|
16
|
+
alias: "l",
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
return args;
|
|
20
|
+
},
|
|
21
|
+
handler:( argv) =>{
|
|
22
|
+
backup(argv).then(value => {
|
|
23
|
+
console.log( "Commited!")
|
|
24
|
+
}).catch( reason => {
|
|
25
|
+
console.error( reason)
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export = command;
|
|
31
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["backup.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,iBAgD/C"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// filename: src/tools/backup.ts
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
28
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
29
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
30
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
31
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
32
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.backup = backup;
|
|
40
|
+
const fs = __importStar(require("node:fs"));
|
|
41
|
+
const Path = __importStar(require("node:path"));
|
|
42
|
+
const tar = __importStar(require("tar"));
|
|
43
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
44
|
+
const common_1 = require("./common");
|
|
45
|
+
const fs_1 = require("../utils/fs");
|
|
46
|
+
function backup(opts) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
var _a;
|
|
49
|
+
require('dotenv').config();
|
|
50
|
+
const { psm, psm_sql, driver, home } = yield (0, common_1.psmLockup)({ schema: opts.schema });
|
|
51
|
+
const migrator = driver.migrator({
|
|
52
|
+
url: process.env[psm.psm.url],
|
|
53
|
+
migrate: '', // Não necessário para backup
|
|
54
|
+
check: '',
|
|
55
|
+
core: fs.readFileSync(psm_sql).toString(),
|
|
56
|
+
});
|
|
57
|
+
// Executa dump
|
|
58
|
+
const dump = yield migrator.dump();
|
|
59
|
+
if (dump.error)
|
|
60
|
+
throw dump.error;
|
|
61
|
+
const moment = require('moment');
|
|
62
|
+
const instant = moment().format('YYYYMMDDHHmmss');
|
|
63
|
+
const label = opts.label ? ` - ${(0, fs_1.sanitizeLabel)(opts.label)}` : '';
|
|
64
|
+
const compressionLevel = (_a = opts.level) !== null && _a !== void 0 ? _a : 9; // nível de compressão padrão 9
|
|
65
|
+
// Caminho temporário do arquivo
|
|
66
|
+
const tmpDir = Path.join(home, `psm/backup/tmp-${instant}`);
|
|
67
|
+
fs.mkdirSync(tmpDir, { recursive: true });
|
|
68
|
+
const backupFile = Path.join(tmpDir, 'backup.sql');
|
|
69
|
+
fs.writeFileSync(backupFile, dump.output);
|
|
70
|
+
// Arquivo final .tar.gz
|
|
71
|
+
const archiveName = Path.join(home, `psm/backup/${instant}${label}.tar.gz`);
|
|
72
|
+
// Compacta **somente o arquivo backup.sql** (sem nível extra)
|
|
73
|
+
yield tar.c({
|
|
74
|
+
gzip: { level: compressionLevel },
|
|
75
|
+
file: archiveName,
|
|
76
|
+
cwd: tmpDir
|
|
77
|
+
}, ['backup.sql']);
|
|
78
|
+
console.log(chalk_1.default.green(`✔ Backup gerado: ${archiveName}`));
|
|
79
|
+
// Remove pasta temporária
|
|
80
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
81
|
+
// Adiciona o .tar.gz ao git
|
|
82
|
+
if (opts.add)
|
|
83
|
+
(0, fs_1.gitAddPath)(home || process.cwd(), archiveName);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["backup.ts"],"names":[],"mappings":";AAAA,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBhC,wBAgDC;AAhED,4CAA8B;AAC9B,gDAAkC;AAClC,yCAA2B;AAE3B,kDAA0B;AAE1B,qCAAmC;AACnC,oCAAsD;AAStD,SAAsB,MAAM,CAAC,IAAmB;;;QAC5C,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QAE3B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,kBAAS,EAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAEhF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAC7B,OAAO,EAAE,EAAE,EAAG,6BAA6B;YAC3C,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;SAC5C,CAAC,CAAC;QAEH,eAAe;QACf,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC;QAEjC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAA,kBAAa,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAElE,MAAM,gBAAgB,GAAG,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC,CAAC,+BAA+B;QAEzE,gCAAgC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAC5D,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1C,wBAAwB;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC;QAE5E,8DAA8D;QAC9D,MAAM,GAAG,CAAC,CAAC,CACP;YACI,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE;YACjC,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,MAAM;SACd,EACD,CAAC,YAAY,CAAC,CACjB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC,CAAC;QAE5D,0BAA0B;QAC1B,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,4BAA4B;QAC5B,IAAI,IAAI,CAAC,GAAG;YAAE,IAAA,eAAU,EAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// filename: src/tools/backup.ts
|
|
2
|
+
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
import * as Path from "node:path";
|
|
5
|
+
import * as tar from "tar";
|
|
6
|
+
import * as cp from "node:child_process";
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
|
|
9
|
+
import {psmLockup} from "./common";
|
|
10
|
+
import {gitAddPath, sanitizeLabel} from "../utils/fs";
|
|
11
|
+
|
|
12
|
+
export interface BackupOptions {
|
|
13
|
+
schema?: string;
|
|
14
|
+
add?: boolean;
|
|
15
|
+
label?: string;
|
|
16
|
+
level?: number; // novo parâmetro de compressão
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function backup(opts: BackupOptions) {
|
|
20
|
+
require('dotenv').config();
|
|
21
|
+
|
|
22
|
+
const { psm, psm_sql, driver, home } = await psmLockup({ schema: opts.schema });
|
|
23
|
+
|
|
24
|
+
const migrator = driver.migrator({
|
|
25
|
+
url: process.env[psm.psm.url],
|
|
26
|
+
migrate: '', // Não necessário para backup
|
|
27
|
+
check: '',
|
|
28
|
+
core: fs.readFileSync(psm_sql).toString(),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Executa dump
|
|
32
|
+
const dump = await migrator.dump();
|
|
33
|
+
if (dump.error) throw dump.error;
|
|
34
|
+
|
|
35
|
+
const moment = require('moment');
|
|
36
|
+
const instant = moment().format('YYYYMMDDHHmmss');
|
|
37
|
+
const label = opts.label ? ` - ${sanitizeLabel(opts.label)}` : '';
|
|
38
|
+
|
|
39
|
+
const compressionLevel = opts.level ?? 9; // nível de compressão padrão 9
|
|
40
|
+
|
|
41
|
+
// Caminho temporário do arquivo
|
|
42
|
+
const tmpDir = Path.join(home, `psm/backup/tmp-${instant}`);
|
|
43
|
+
fs.mkdirSync(tmpDir, { recursive: true });
|
|
44
|
+
const backupFile = Path.join(tmpDir, 'backup.sql');
|
|
45
|
+
fs.writeFileSync(backupFile, dump.output);
|
|
46
|
+
|
|
47
|
+
// Arquivo final .tar.gz
|
|
48
|
+
const archiveName = Path.join(home, `psm/backup/${instant}${label}.tar.gz`);
|
|
49
|
+
|
|
50
|
+
// Compacta **somente o arquivo backup.sql** (sem nível extra)
|
|
51
|
+
await tar.c(
|
|
52
|
+
{
|
|
53
|
+
gzip: { level: compressionLevel },
|
|
54
|
+
file: archiveName,
|
|
55
|
+
cwd: tmpDir
|
|
56
|
+
},
|
|
57
|
+
['backup.sql']
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
console.log(chalk.green(`✔ Backup gerado: ${archiveName}`));
|
|
61
|
+
|
|
62
|
+
// Remove pasta temporária
|
|
63
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
64
|
+
|
|
65
|
+
// Adiciona o .tar.gz ao git
|
|
66
|
+
if( opts.add )gitAddPath(home || process.cwd(), archiveName);
|
|
67
|
+
}
|
|
68
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["commit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["commit.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC3B,MAAM,CAAC,EAAC,MAAM,CAAA;IACd,QAAQ,CAAC,EAAC,MAAM,CAAA;IAChB,KAAK,CAAC,EAAC,MAAM,CAAA;IACb,kBAAkB,EAAC,MAAM,CAAA;CAC5B;AACD,wBAAsB,MAAM,CAAC,IAAI,EAAC,cAAc,iBAuH/C"}
|
package/src/tools/commit.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// filename: src/tools/commit.ts
|
|
2
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
4
|
if (k2 === undefined) k2 = k;
|
|
4
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -39,41 +40,12 @@ exports.commit = commit;
|
|
|
39
40
|
const fs = __importStar(require("node:fs"));
|
|
40
41
|
const Path = __importStar(require("node:path"));
|
|
41
42
|
const yaml = __importStar(require("yaml"));
|
|
42
|
-
const
|
|
43
|
-
const deploy_1 = require("./deploy");
|
|
43
|
+
const tar = __importStar(require("tar"));
|
|
44
44
|
const chalk_1 = __importDefault(require("chalk"));
|
|
45
|
+
const cp = __importStar(require("node:child_process"));
|
|
46
|
+
const deploy_1 = require("./deploy");
|
|
45
47
|
const common_1 = require("./common");
|
|
46
|
-
|
|
47
|
-
const res = (0, node_child_process_1.spawnSync)("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
48
|
-
cwd,
|
|
49
|
-
encoding: "utf-8",
|
|
50
|
-
});
|
|
51
|
-
return res.status === 0 && res.stdout.trim() === "true";
|
|
52
|
-
}
|
|
53
|
-
function gitAddPath(cwd, targetPath) {
|
|
54
|
-
var _a;
|
|
55
|
-
try {
|
|
56
|
-
if (!isGitRepo(cwd)) {
|
|
57
|
-
console.log(chalk_1.default.gray("Repositório git não detectado; ignorando 'git add'."));
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
const relPath = Path.relative(cwd, targetPath);
|
|
61
|
-
const addTarget = relPath.startsWith("..") ? targetPath : relPath;
|
|
62
|
-
const addRes = (0, node_child_process_1.spawnSync)("git", ["add", addTarget], {
|
|
63
|
-
cwd,
|
|
64
|
-
stdio: "inherit",
|
|
65
|
-
});
|
|
66
|
-
if (addRes.status !== 0) {
|
|
67
|
-
console.warn(chalk_1.default.yellow(`Aviso: 'git add' falhou para ${addTarget}.`));
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
console.log(chalk_1.default.green(`✔ Adicionado ao git: ${addTarget}`));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
console.warn(chalk_1.default.yellow("Aviso: não foi possível adicionar ao git."), (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
48
|
+
const fs_1 = require("../utils/fs");
|
|
77
49
|
function commit(opts) {
|
|
78
50
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
51
|
require('dotenv').config();
|
|
@@ -81,7 +53,7 @@ function commit(opts) {
|
|
|
81
53
|
let command = opts["generate-command"];
|
|
82
54
|
if (!command)
|
|
83
55
|
command = "prisma generate";
|
|
84
|
-
|
|
56
|
+
cp.spawnSync("npx", [...command.split(" ")], {
|
|
85
57
|
cwd: process.cwd()
|
|
86
58
|
});
|
|
87
59
|
}
|
|
@@ -128,6 +100,10 @@ function commit(opts) {
|
|
|
128
100
|
});
|
|
129
101
|
throw new Error("Migrate error: Check shadow failed!");
|
|
130
102
|
}
|
|
103
|
+
const dump = yield migrator.dump();
|
|
104
|
+
if (dump.error) {
|
|
105
|
+
throw dump.error;
|
|
106
|
+
}
|
|
131
107
|
result = yield migrator.migrate();
|
|
132
108
|
if (!result.success) {
|
|
133
109
|
console.error(result.error);
|
|
@@ -139,9 +115,9 @@ function commit(opts) {
|
|
|
139
115
|
const moment = require('moment');
|
|
140
116
|
let label = "";
|
|
141
117
|
if (!!opts.label)
|
|
142
|
-
label = ` - ${sanitizeLabel(opts.label)}`;
|
|
118
|
+
label = ` - ${(0, fs_1.sanitizeLabel)(opts.label)}`;
|
|
143
119
|
let preview;
|
|
144
|
-
const last = getLatestFolder(Path.join(home, `psm/revisions/schema`));
|
|
120
|
+
const last = (0, fs_1.getLatestFolder)(Path.join(home, `psm/revisions/schema`));
|
|
145
121
|
if (!!last) {
|
|
146
122
|
preview = yaml.parse(fs.readFileSync(Path.join(home, "psm/revisions/schema", last, "psm.yml")).toString());
|
|
147
123
|
}
|
|
@@ -155,26 +131,19 @@ function commit(opts) {
|
|
|
155
131
|
fs.mkdirSync(nextRev, { recursive: true });
|
|
156
132
|
fs.renameSync(next, Path.join(nextRev, "migration.sql"));
|
|
157
133
|
fs.writeFileSync(Path.join(nextRev, "psm.yml"), yaml.stringify(psm));
|
|
134
|
+
fs.writeFileSync(Path.join(nextRev, "backup.sql"), dump.output);
|
|
158
135
|
fs.unlinkSync(check);
|
|
159
|
-
|
|
136
|
+
const archiveName = Path.join(home || process.cwd(), `psm/revisions/schema/${psm.migration.instate}${label}.tar.gz`);
|
|
137
|
+
yield tar.c({
|
|
138
|
+
gzip: {
|
|
139
|
+
level: 9
|
|
140
|
+
},
|
|
141
|
+
file: archiveName,
|
|
142
|
+
cwd: Path.dirname(nextRev)
|
|
143
|
+
}, [Path.basename(nextRev)]);
|
|
144
|
+
console.log(chalk_1.default.green(`✔ Migration compactada: ${archiveName}`));
|
|
145
|
+
fs.rmSync(nextRev, { recursive: true, force: true });
|
|
146
|
+
(0, fs_1.gitAddPath)(home || process.cwd(), archiveName);
|
|
160
147
|
});
|
|
161
148
|
}
|
|
162
|
-
// Função para obter a pasta com maior instante
|
|
163
|
-
function getLatestFolder(basePath) {
|
|
164
|
-
if (!fs.existsSync(basePath))
|
|
165
|
-
return null;
|
|
166
|
-
const dirs = fs.readdirSync(basePath, { withFileTypes: true })
|
|
167
|
-
.filter(d => d.isDirectory())
|
|
168
|
-
.map(d => d.name)
|
|
169
|
-
.filter(name => /^\d{14}( - .+)?$/.test(name))
|
|
170
|
-
.sort((a, b) => b.localeCompare(a));
|
|
171
|
-
return dirs[0] || null;
|
|
172
|
-
}
|
|
173
|
-
function sanitizeLabel(label) {
|
|
174
|
-
return label
|
|
175
|
-
.replace(/[<>:"/\\|?*\x00-\x1F]/g, '') // remove caracteres inválidos no Windows
|
|
176
|
-
.replace(/[\u{0080}-\u{FFFF}]/gu, '') // remove caracteres não ASCII (opcional)
|
|
177
|
-
.trim()
|
|
178
|
-
.replace(/\s+/g, ' '); // normaliza espaços
|
|
179
|
-
}
|
|
180
149
|
//# sourceMappingURL=commit.js.map
|
package/src/tools/commit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["commit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["commit.ts"],"names":[],"mappings":"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"}
|
package/src/tools/commit.ts
CHANGED
|
@@ -1,47 +1,19 @@
|
|
|
1
|
+
// filename: src/tools/commit.ts
|
|
2
|
+
|
|
1
3
|
import * as fs from "node:fs";
|
|
2
4
|
import * as Path from "node:path";
|
|
3
5
|
import * as yaml from "yaml";
|
|
6
|
+
import * as tar from "tar";
|
|
7
|
+
import chalk from "chalk";
|
|
4
8
|
import {PSMConfigFile} from "../configs";
|
|
5
|
-
import
|
|
9
|
+
import * as cp from "node:child_process";
|
|
6
10
|
import {fetch} from "./deploy";
|
|
7
|
-
import chalk from "chalk";
|
|
8
11
|
import {psmLockup} from "./common";
|
|
12
|
+
import {getLatestFolder, gitAddPath, sanitizeLabel} from "../utils/fs";
|
|
9
13
|
|
|
10
|
-
function isGitRepo(cwd: string) {
|
|
11
|
-
const res = spawnSync("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
12
|
-
cwd,
|
|
13
|
-
encoding: "utf-8",
|
|
14
|
-
});
|
|
15
|
-
return res.status === 0 && res.stdout.trim() === "true";
|
|
16
|
-
}
|
|
17
14
|
|
|
18
|
-
function gitAddPath(cwd: string, targetPath: string) {
|
|
19
|
-
try {
|
|
20
|
-
if (!isGitRepo(cwd)) {
|
|
21
|
-
console.log(chalk.gray("Repositório git não detectado; ignorando 'git add'."));
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
15
|
|
|
25
|
-
const relPath = Path.relative(cwd, targetPath);
|
|
26
|
-
const addTarget = relPath.startsWith("..") ? targetPath : relPath;
|
|
27
16
|
|
|
28
|
-
const addRes = spawnSync("git", ["add", addTarget], {
|
|
29
|
-
cwd,
|
|
30
|
-
stdio: "inherit",
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
if (addRes.status !== 0) {
|
|
34
|
-
console.warn(chalk.yellow(`Aviso: 'git add' falhou para ${addTarget}.`));
|
|
35
|
-
} else {
|
|
36
|
-
console.log(chalk.green(`✔ Adicionado ao git: ${addTarget}`));
|
|
37
|
-
}
|
|
38
|
-
} catch (err: any) {
|
|
39
|
-
console.warn(
|
|
40
|
-
chalk.yellow("Aviso: não foi possível adicionar ao git."),
|
|
41
|
-
err?.message ?? err,
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
17
|
|
|
46
18
|
|
|
47
19
|
|
|
@@ -56,7 +28,7 @@ export async function commit(opts:MigrateOptions ) {
|
|
|
56
28
|
if( opts.generate ) {
|
|
57
29
|
let command = opts["generate-command"];
|
|
58
30
|
if( !command) command = "prisma generate"
|
|
59
|
-
spawnSync( "npx", [ ...command.split(" ") ], {
|
|
31
|
+
cp.spawnSync( "npx", [ ...command.split(" ") ], {
|
|
60
32
|
cwd: process.cwd()
|
|
61
33
|
});
|
|
62
34
|
}
|
|
@@ -115,6 +87,10 @@ export async function commit(opts:MigrateOptions ) {
|
|
|
115
87
|
throw new Error( "Migrate error: Check shadow failed!" );
|
|
116
88
|
}
|
|
117
89
|
|
|
90
|
+
const dump = await migrator.dump();
|
|
91
|
+
if( dump.error ){
|
|
92
|
+
throw dump.error;
|
|
93
|
+
}
|
|
118
94
|
|
|
119
95
|
result = await migrator.migrate();
|
|
120
96
|
if( !result.success ) {
|
|
@@ -143,27 +119,27 @@ export async function commit(opts:MigrateOptions ) {
|
|
|
143
119
|
|
|
144
120
|
fs.mkdirSync( nextRev, { recursive: true });
|
|
145
121
|
fs.renameSync( next, Path.join( nextRev, "migration.sql" ) );
|
|
146
|
-
fs.writeFileSync(
|
|
122
|
+
fs.writeFileSync( Path.join( nextRev, "psm.yml" ), yaml.stringify( psm ) );
|
|
123
|
+
fs.writeFileSync( Path.join(nextRev, "backup.sql"), dump.output );
|
|
124
|
+
|
|
147
125
|
fs.unlinkSync( check );
|
|
148
|
-
gitAddPath(home || process.cwd(), nextRev);
|
|
149
|
-
}
|
|
150
126
|
|
|
127
|
+
const archiveName = Path.join(home || process.cwd(), `psm/revisions/schema/${psm.migration.instate}${label}.tar.gz`);
|
|
151
128
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
129
|
+
await tar.c(
|
|
130
|
+
{
|
|
131
|
+
gzip: {
|
|
132
|
+
level: 9
|
|
133
|
+
},
|
|
134
|
+
file: archiveName,
|
|
135
|
+
cwd: Path.dirname(nextRev)
|
|
136
|
+
},
|
|
137
|
+
[Path.basename(nextRev)]
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
console.log(chalk.green(`✔ Migration compactada: ${archiveName}`));
|
|
141
|
+
|
|
142
|
+
fs.rmSync(nextRev, { recursive: true, force: true });
|
|
162
143
|
|
|
163
|
-
|
|
164
|
-
return label
|
|
165
|
-
.replace(/[<>:"/\\|?*\x00-\x1F]/g, '') // remove caracteres inválidos no Windows
|
|
166
|
-
.replace(/[\u{0080}-\u{FFFF}]/gu, '') // remove caracteres não ASCII (opcional)
|
|
167
|
-
.trim()
|
|
168
|
-
.replace(/\s+/g, ' '); // normaliza espaços
|
|
144
|
+
gitAddPath(home || process.cwd(), archiveName );
|
|
169
145
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function sanitizeLabel(label: string): string;
|
|
2
|
+
export declare function getLatestFolder(basePath: string): string;
|
|
3
|
+
export declare function isGitRepo(cwd: string): boolean;
|
|
4
|
+
export declare function gitAddPath(cwd: string, targetPath: string): void;
|
|
5
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["fs.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAE,KAAK,EAAC,MAAM,UAM1C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAC,MAAM,UAQ9C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,WAMpC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QA0BzD"}
|
package/src/utils/fs.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.sanitizeLabel = sanitizeLabel;
|
|
30
|
+
exports.getLatestFolder = getLatestFolder;
|
|
31
|
+
exports.isGitRepo = isGitRepo;
|
|
32
|
+
exports.gitAddPath = gitAddPath;
|
|
33
|
+
const fs = __importStar(require("node:fs"));
|
|
34
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
35
|
+
const cp = __importStar(require("node:child_process"));
|
|
36
|
+
const Path = __importStar(require("node:path"));
|
|
37
|
+
function sanitizeLabel(label) {
|
|
38
|
+
return label
|
|
39
|
+
.replace(/[<>:"/\\|?*\x00-\x1F]/g, '') // remove caracteres inválidos no Windows
|
|
40
|
+
.replace(/[\u{0080}-\u{FFFF}]/gu, '') // remove caracteres não ASCII (opcional)
|
|
41
|
+
.trim()
|
|
42
|
+
.replace(/\s+/g, ' '); // normaliza espaços
|
|
43
|
+
}
|
|
44
|
+
function getLatestFolder(basePath) {
|
|
45
|
+
if (!fs.existsSync(basePath))
|
|
46
|
+
return null;
|
|
47
|
+
const dirs = fs.readdirSync(basePath, { withFileTypes: true })
|
|
48
|
+
.filter(d => d.isDirectory())
|
|
49
|
+
.map(d => d.name)
|
|
50
|
+
.filter(name => /^\d{14}( - .+)?$/.test(name))
|
|
51
|
+
.sort((a, b) => b.localeCompare(a));
|
|
52
|
+
return dirs[0] || null;
|
|
53
|
+
}
|
|
54
|
+
function isGitRepo(cwd) {
|
|
55
|
+
const res = cp.spawnSync("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
56
|
+
cwd,
|
|
57
|
+
encoding: "utf-8",
|
|
58
|
+
});
|
|
59
|
+
return res.status === 0 && res.stdout.trim() === "true";
|
|
60
|
+
}
|
|
61
|
+
function gitAddPath(cwd, targetPath) {
|
|
62
|
+
var _a;
|
|
63
|
+
try {
|
|
64
|
+
if (!isGitRepo(cwd)) {
|
|
65
|
+
console.log(chalk_1.default.gray("Repositório git não detectado; ignorando 'git add'."));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const relPath = Path.relative(cwd, targetPath);
|
|
69
|
+
const addTarget = relPath.startsWith("..") ? targetPath : relPath;
|
|
70
|
+
const addRes = cp.spawnSync("git", ["add", addTarget], {
|
|
71
|
+
cwd,
|
|
72
|
+
stdio: "inherit",
|
|
73
|
+
});
|
|
74
|
+
if (addRes.status !== 0) {
|
|
75
|
+
console.warn(chalk_1.default.yellow(`Aviso: 'git add' falhou para ${addTarget}.`));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.log(chalk_1.default.green(`✔ Adicionado ao git: ${addTarget}`));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
console.warn(chalk_1.default.yellow("Aviso: não foi possível adicionar ao git."), (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["fs.ts"],"names":[],"mappings":"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"}
|
package/src/utils/fs.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as fs from "node:fs"
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import * as cp from "node:child_process";
|
|
4
|
+
import * as Path from "node:path";
|
|
5
|
+
|
|
6
|
+
export function sanitizeLabel( label:string ) {
|
|
7
|
+
return label
|
|
8
|
+
.replace(/[<>:"/\\|?*\x00-\x1F]/g, '') // remove caracteres inválidos no Windows
|
|
9
|
+
.replace(/[\u{0080}-\u{FFFF}]/gu, '') // remove caracteres não ASCII (opcional)
|
|
10
|
+
.trim()
|
|
11
|
+
.replace(/\s+/g, ' '); // normaliza espaços
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function getLatestFolder(basePath:string) {
|
|
15
|
+
if (!fs.existsSync(basePath)) return null;
|
|
16
|
+
const dirs = fs.readdirSync(basePath, { withFileTypes: true })
|
|
17
|
+
.filter(d => d.isDirectory())
|
|
18
|
+
.map(d => d.name)
|
|
19
|
+
.filter(name => /^\d{14}( - .+)?$/.test(name))
|
|
20
|
+
.sort((a, b) => b.localeCompare(a));
|
|
21
|
+
return dirs[0] || null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
export function isGitRepo(cwd: string) {
|
|
26
|
+
const res = cp.spawnSync("git", ["rev-parse", "--is-inside-work-tree"], {
|
|
27
|
+
cwd,
|
|
28
|
+
encoding: "utf-8",
|
|
29
|
+
});
|
|
30
|
+
return res.status === 0 && res.stdout.trim() === "true";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function gitAddPath(cwd: string, targetPath: string) {
|
|
34
|
+
try {
|
|
35
|
+
if (!isGitRepo(cwd)) {
|
|
36
|
+
console.log(chalk.gray("Repositório git não detectado; ignorando 'git add'."));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const relPath = Path.relative(cwd, targetPath);
|
|
41
|
+
const addTarget = relPath.startsWith("..") ? targetPath : relPath;
|
|
42
|
+
|
|
43
|
+
const addRes = cp.spawnSync("git", ["add", addTarget], {
|
|
44
|
+
cwd,
|
|
45
|
+
stdio: "inherit",
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
if (addRes.status !== 0) {
|
|
49
|
+
console.warn(chalk.yellow(`Aviso: 'git add' falhou para ${addTarget}.`));
|
|
50
|
+
} else {
|
|
51
|
+
console.log(chalk.green(`✔ Adicionado ao git: ${addTarget}`));
|
|
52
|
+
}
|
|
53
|
+
} catch (err: any) {
|
|
54
|
+
console.warn(
|
|
55
|
+
chalk.yellow("Aviso: não foi possível adicionar ao git."),
|
|
56
|
+
err?.message ?? err,
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
}
|