@datatruck/cli 0.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/lib/Action/BackupAction.d.ts +32 -0
- package/lib/Action/BackupAction.js +201 -0
- package/lib/Action/BackupSessionsAction.d.ts +13 -0
- package/lib/Action/BackupSessionsAction.js +16 -0
- package/lib/Action/CleanCacheAction.d.ts +9 -0
- package/lib/Action/CleanCacheAction.js +18 -0
- package/lib/Action/ConfigAction.d.ts +14 -0
- package/lib/Action/ConfigAction.js +64 -0
- package/lib/Action/InitAction.d.ts +18 -0
- package/lib/Action/InitAction.js +39 -0
- package/lib/Action/PruneAction.d.ts +37 -0
- package/lib/Action/PruneAction.js +80 -0
- package/lib/Action/RestoreAction.d.ts +36 -0
- package/lib/Action/RestoreAction.js +246 -0
- package/lib/Action/RestoreSessionsAction.d.ts +13 -0
- package/lib/Action/RestoreSessionsAction.js +16 -0
- package/lib/Action/SnapshotsAction.d.ts +30 -0
- package/lib/Action/SnapshotsAction.js +35 -0
- package/lib/Command/BackupCommand.d.ts +15 -0
- package/lib/Command/BackupCommand.js +83 -0
- package/lib/Command/BackupSessionsCommand.d.ts +12 -0
- package/lib/Command/BackupSessionsCommand.js +88 -0
- package/lib/Command/CleanCacheCommand.d.ts +6 -0
- package/lib/Command/CleanCacheCommand.js +20 -0
- package/lib/Command/CommandAbstract.d.ts +19 -0
- package/lib/Command/CommandAbstract.js +14 -0
- package/lib/Command/ConfigCommand.d.ts +17 -0
- package/lib/Command/ConfigCommand.js +61 -0
- package/lib/Command/InitCommand.d.ts +13 -0
- package/lib/Command/InitCommand.js +67 -0
- package/lib/Command/PruneCommand.d.ts +27 -0
- package/lib/Command/PruneCommand.js +160 -0
- package/lib/Command/RestoreCommand.d.ts +14 -0
- package/lib/Command/RestoreCommand.js +71 -0
- package/lib/Command/RestoreSessionsCommand.d.ts +12 -0
- package/lib/Command/RestoreSessionsCommand.js +87 -0
- package/lib/Command/SnapshotsCommand.d.ts +25 -0
- package/lib/Command/SnapshotsCommand.js +128 -0
- package/lib/Config/Config.d.ts +8 -0
- package/lib/Config/Config.js +19 -0
- package/lib/Config/PackageConfig.d.ts +27 -0
- package/lib/Config/PackageConfig.js +69 -0
- package/lib/Config/PackageRepositoryConfig.d.ts +17 -0
- package/lib/Config/PackageRepositoryConfig.js +37 -0
- package/lib/Config/PrunePolicyConfig.d.ts +4 -0
- package/lib/Config/PrunePolicyConfig.js +28 -0
- package/lib/Config/RepositoryConfig.d.ts +18 -0
- package/lib/Config/RepositoryConfig.js +37 -0
- package/lib/Config/TaskConfig.d.ts +23 -0
- package/lib/Config/TaskConfig.js +39 -0
- package/lib/Decorator/EntityDecorator.d.ts +11 -0
- package/lib/Decorator/EntityDecorator.js +17 -0
- package/lib/Entity/BackupSessionEntity.d.ts +6 -0
- package/lib/Entity/BackupSessionEntity.js +22 -0
- package/lib/Entity/BackupSessionRepositoryEntity.d.ts +6 -0
- package/lib/Entity/BackupSessionRepositoryEntity.js +22 -0
- package/lib/Entity/BackupSessionTaskEntity.d.ts +5 -0
- package/lib/Entity/BackupSessionTaskEntity.js +22 -0
- package/lib/Entity/CrudEntityAbstract.d.ts +5 -0
- package/lib/Entity/CrudEntityAbstract.js +6 -0
- package/lib/Entity/RestoreSessionEntity.d.ts +5 -0
- package/lib/Entity/RestoreSessionEntity.js +22 -0
- package/lib/Entity/RestoreSessionRepositoryEntity.d.ts +6 -0
- package/lib/Entity/RestoreSessionRepositoryEntity.js +22 -0
- package/lib/Entity/RestoreSessionTaskEntity.d.ts +5 -0
- package/lib/Entity/RestoreSessionTaskEntity.js +22 -0
- package/lib/Entity/StateEntityAbstract.d.ts +12 -0
- package/lib/Entity/StateEntityAbstract.js +7 -0
- package/lib/Error/AppError.d.ts +2 -0
- package/lib/Error/AppError.js +6 -0
- package/lib/Factory/CommandFactory.d.ts +42 -0
- package/lib/Factory/CommandFactory.js +79 -0
- package/lib/Factory/EntityFactory.d.ts +6 -0
- package/lib/Factory/EntityFactory.js +40 -0
- package/lib/Factory/RepositoryFactory.d.ts +3 -0
- package/lib/Factory/RepositoryFactory.js +23 -0
- package/lib/Factory/TaskFactory.d.ts +3 -0
- package/lib/Factory/TaskFactory.js +30 -0
- package/lib/JsonSchema/DefinitionEnum.d.ts +25 -0
- package/lib/JsonSchema/DefinitionEnum.js +32 -0
- package/lib/JsonSchema/JsonSchema.d.ts +4 -0
- package/lib/JsonSchema/JsonSchema.js +50 -0
- package/lib/Repository/GitRepository.d.ts +29 -0
- package/lib/Repository/GitRepository.js +237 -0
- package/lib/Repository/LocalRepository.d.ts +51 -0
- package/lib/Repository/LocalRepository.js +358 -0
- package/lib/Repository/RepositoryAbstract.d.ts +77 -0
- package/lib/Repository/RepositoryAbstract.js +19 -0
- package/lib/Repository/ResticRepository.d.ts +36 -0
- package/lib/Repository/ResticRepository.js +230 -0
- package/lib/SessionDriver/ConsoleSessionDriver.d.ts +37 -0
- package/lib/SessionDriver/ConsoleSessionDriver.js +178 -0
- package/lib/SessionDriver/SessionDriverAbstract.d.ts +78 -0
- package/lib/SessionDriver/SessionDriverAbstract.js +27 -0
- package/lib/SessionDriver/SqliteSessionDriver.d.ts +20 -0
- package/lib/SessionDriver/SqliteSessionDriver.js +169 -0
- package/lib/SessionManager/BackupSessionManager.d.ts +44 -0
- package/lib/SessionManager/BackupSessionManager.js +206 -0
- package/lib/SessionManager/RestoreSessionManager.d.ts +44 -0
- package/lib/SessionManager/RestoreSessionManager.js +206 -0
- package/lib/Task/GitTask.d.ts +35 -0
- package/lib/Task/GitTask.js +248 -0
- package/lib/Task/MariadbTask.d.ts +25 -0
- package/lib/Task/MariadbTask.js +139 -0
- package/lib/Task/MssqlTask.d.ts +22 -0
- package/lib/Task/MssqlTask.js +109 -0
- package/lib/Task/MysqlDumpTask.d.ts +14 -0
- package/lib/Task/MysqlDumpTask.js +129 -0
- package/lib/Task/PostgresqlDumpTask.d.ts +14 -0
- package/lib/Task/PostgresqlDumpTask.js +101 -0
- package/lib/Task/SqlDumpTaskAbstract.d.ts +36 -0
- package/lib/Task/SqlDumpTaskAbstract.js +146 -0
- package/lib/Task/TaskAbstract.d.ts +37 -0
- package/lib/Task/TaskAbstract.js +17 -0
- package/lib/bin.d.ts +2 -0
- package/lib/bin.js +5 -0
- package/lib/cli.d.ts +4 -0
- package/lib/cli.js +110 -0
- package/lib/index.d.ts +0 -0
- package/lib/index.js +1 -0
- package/lib/util/DataFormat.d.ts +24 -0
- package/lib/util/DataFormat.js +50 -0
- package/lib/util/GitUtil.d.ts +38 -0
- package/lib/util/GitUtil.js +105 -0
- package/lib/util/ObjectVault.d.ts +13 -0
- package/lib/util/ObjectVault.js +31 -0
- package/lib/util/ResticUtil.d.ts +92 -0
- package/lib/util/ResticUtil.js +144 -0
- package/lib/util/cli-util.d.ts +27 -0
- package/lib/util/cli-util.js +118 -0
- package/lib/util/datatruck/config-util.d.ts +55 -0
- package/lib/util/datatruck/config-util.js +93 -0
- package/lib/util/datatruck/paths-util.d.ts +5 -0
- package/lib/util/datatruck/paths-util.js +22 -0
- package/lib/util/datatruck/snapshot-util.d.ts +4 -0
- package/lib/util/datatruck/snapshot-util.js +31 -0
- package/lib/util/date-util.d.ts +12 -0
- package/lib/util/date-util.js +74 -0
- package/lib/util/entity-util.d.ts +4 -0
- package/lib/util/entity-util.js +10 -0
- package/lib/util/fs-util.d.ts +43 -0
- package/lib/util/fs-util.js +278 -0
- package/lib/util/math-util.d.ts +1 -0
- package/lib/util/math-util.js +7 -0
- package/lib/util/object-util.d.ts +7 -0
- package/lib/util/object-util.js +58 -0
- package/lib/util/process-util.d.ts +50 -0
- package/lib/util/process-util.js +181 -0
- package/lib/util/string-util.d.ts +17 -0
- package/lib/util/string-util.js +77 -0
- package/lib/util/zip-util.d.ts +52 -0
- package/lib/util/zip-util.js +135 -0
- package/migrations/001-initial.sql +122 -0
- package/package.json +62 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CleanCacheActionOptionsType } from "../Action/CleanCacheAction";
|
|
2
|
+
import { BackupCommandOptionsType } from "../Command/BackupCommand";
|
|
3
|
+
import { BackupSessionsCommandOptionsType } from "../Command/BackupSessionsCommand";
|
|
4
|
+
import { CleanCacheCommand } from "../Command/CleanCacheCommand";
|
|
5
|
+
import { GlobalOptionsType } from "../Command/CommandAbstract";
|
|
6
|
+
import { ConfigCommandLogType, ConfigCommandOptionsType } from "../Command/ConfigCommand";
|
|
7
|
+
import { InitCommandLogType, InitCommandOptionsType } from "../Command/InitCommand";
|
|
8
|
+
import { PruneCommandOptionsType } from "../Command/PruneCommand";
|
|
9
|
+
import { RestoreCommandOptionsType } from "../Command/RestoreCommand";
|
|
10
|
+
import { RestoreSessionsCommandOptionsType } from "../Command/RestoreSessionsCommand";
|
|
11
|
+
import { SnapshotsCommandLogType, SnapshotsCommandOptionsType } from "../Command/SnapshotsCommand";
|
|
12
|
+
export declare enum CommandEnum {
|
|
13
|
+
config = "config",
|
|
14
|
+
init = "init",
|
|
15
|
+
snapshots = "snapshots",
|
|
16
|
+
prune = "prune",
|
|
17
|
+
backup = "backup",
|
|
18
|
+
backupSessions = "backup-sessions",
|
|
19
|
+
restore = "restore",
|
|
20
|
+
restoreSessions = "restore-sessions",
|
|
21
|
+
cleanCache = "clean-cache"
|
|
22
|
+
}
|
|
23
|
+
export declare type OptionsMapType = {
|
|
24
|
+
[CommandEnum.config]: ConfigCommandOptionsType;
|
|
25
|
+
[CommandEnum.init]: InitCommandOptionsType;
|
|
26
|
+
[CommandEnum.snapshots]: SnapshotsCommandOptionsType;
|
|
27
|
+
[CommandEnum.prune]: PruneCommandOptionsType;
|
|
28
|
+
[CommandEnum.backup]: BackupCommandOptionsType;
|
|
29
|
+
[CommandEnum.backupSessions]: BackupSessionsCommandOptionsType;
|
|
30
|
+
[CommandEnum.restore]: RestoreCommandOptionsType;
|
|
31
|
+
[CommandEnum.restoreSessions]: RestoreSessionsCommandOptionsType;
|
|
32
|
+
[CommandEnum.cleanCache]: CleanCacheActionOptionsType;
|
|
33
|
+
};
|
|
34
|
+
export declare type LogMapType = {
|
|
35
|
+
[CommandEnum.config]: ConfigCommandLogType;
|
|
36
|
+
[CommandEnum.init]: InitCommandLogType;
|
|
37
|
+
[CommandEnum.snapshots]: SnapshotsCommandLogType;
|
|
38
|
+
};
|
|
39
|
+
export declare function CommandFactory<TCommand extends keyof OptionsMapType>(type: TCommand, globalOptions: GlobalOptionsType<false>, options: OptionsMapType[TCommand]): CleanCacheCommand;
|
|
40
|
+
export declare function exec<TCommand extends keyof OptionsMapType>(type: TCommand, globalOptions: GlobalOptionsType<false>, options: OptionsMapType[TCommand]): Promise<number>;
|
|
41
|
+
export declare function makeParseLog<TCommand extends keyof LogMapType>(type: TCommand): () => LogMapType[TCommand];
|
|
42
|
+
export declare function CommandConstructorFactory(type: CommandEnum): typeof CleanCacheCommand;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommandConstructorFactory = exports.makeParseLog = exports.exec = exports.CommandFactory = exports.CommandEnum = void 0;
|
|
4
|
+
const BackupCommand_1 = require("../Command/BackupCommand");
|
|
5
|
+
const BackupSessionsCommand_1 = require("../Command/BackupSessionsCommand");
|
|
6
|
+
const CleanCacheCommand_1 = require("../Command/CleanCacheCommand");
|
|
7
|
+
const ConfigCommand_1 = require("../Command/ConfigCommand");
|
|
8
|
+
const InitCommand_1 = require("../Command/InitCommand");
|
|
9
|
+
const PruneCommand_1 = require("../Command/PruneCommand");
|
|
10
|
+
const RestoreCommand_1 = require("../Command/RestoreCommand");
|
|
11
|
+
const RestoreSessionsCommand_1 = require("../Command/RestoreSessionsCommand");
|
|
12
|
+
const SnapshotsCommand_1 = require("../Command/SnapshotsCommand");
|
|
13
|
+
const AppError_1 = require("../Error/AppError");
|
|
14
|
+
var CommandEnum;
|
|
15
|
+
(function (CommandEnum) {
|
|
16
|
+
CommandEnum["config"] = "config";
|
|
17
|
+
CommandEnum["init"] = "init";
|
|
18
|
+
CommandEnum["snapshots"] = "snapshots";
|
|
19
|
+
CommandEnum["prune"] = "prune";
|
|
20
|
+
CommandEnum["backup"] = "backup";
|
|
21
|
+
CommandEnum["backupSessions"] = "backup-sessions";
|
|
22
|
+
CommandEnum["restore"] = "restore";
|
|
23
|
+
CommandEnum["restoreSessions"] = "restore-sessions";
|
|
24
|
+
CommandEnum["cleanCache"] = "clean-cache";
|
|
25
|
+
})(CommandEnum = exports.CommandEnum || (exports.CommandEnum = {}));
|
|
26
|
+
function CommandFactory(type, globalOptions, options) {
|
|
27
|
+
const constructor = CommandConstructorFactory(type);
|
|
28
|
+
return new constructor(globalOptions, options);
|
|
29
|
+
}
|
|
30
|
+
exports.CommandFactory = CommandFactory;
|
|
31
|
+
async function exec(type, globalOptions, options) {
|
|
32
|
+
return await CommandFactory(type, globalOptions, options).onExec();
|
|
33
|
+
}
|
|
34
|
+
exports.exec = exec;
|
|
35
|
+
function makeParseLog(type) {
|
|
36
|
+
const data = [];
|
|
37
|
+
const consoleLog = console.log;
|
|
38
|
+
console.log = (...items) => {
|
|
39
|
+
data.push(...items);
|
|
40
|
+
};
|
|
41
|
+
return function parseLog() {
|
|
42
|
+
console.log = consoleLog;
|
|
43
|
+
return JSON.parse(data.flat().join("\n"));
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
exports.makeParseLog = makeParseLog;
|
|
47
|
+
function CommandConstructorFactory(type) {
|
|
48
|
+
if (type === CommandEnum.config) {
|
|
49
|
+
return ConfigCommand_1.ConfigCommand;
|
|
50
|
+
}
|
|
51
|
+
else if (type === CommandEnum.init) {
|
|
52
|
+
return InitCommand_1.InitCommand;
|
|
53
|
+
}
|
|
54
|
+
else if (type === CommandEnum.snapshots) {
|
|
55
|
+
return SnapshotsCommand_1.SnapshotsCommand;
|
|
56
|
+
}
|
|
57
|
+
else if (type === CommandEnum.prune) {
|
|
58
|
+
return PruneCommand_1.PruneCommand;
|
|
59
|
+
}
|
|
60
|
+
else if (type === CommandEnum.backup) {
|
|
61
|
+
return BackupCommand_1.BackupCommand;
|
|
62
|
+
}
|
|
63
|
+
else if (type === CommandEnum.backupSessions) {
|
|
64
|
+
return BackupSessionsCommand_1.BackupSessionsCommand;
|
|
65
|
+
}
|
|
66
|
+
else if (type === CommandEnum.restore) {
|
|
67
|
+
return RestoreCommand_1.RestoreCommand;
|
|
68
|
+
}
|
|
69
|
+
else if (type === CommandEnum.restoreSessions) {
|
|
70
|
+
return RestoreSessionsCommand_1.RestoreSessionsCommand;
|
|
71
|
+
}
|
|
72
|
+
else if (type === CommandEnum.cleanCache) {
|
|
73
|
+
return CleanCacheCommand_1.CleanCacheCommand;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
throw new AppError_1.AppError(`Invalid command type: ${type}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.CommandConstructorFactory = CommandConstructorFactory;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BackupSessionRepositoryEntity } from "../Entity/BackupSessionRepositoryEntity";
|
|
2
|
+
import { BackupSessionTaskEntity } from "../Entity/BackupSessionTaskEntity";
|
|
3
|
+
import { RestoreSessionEntity } from "../Entity/RestoreSessionEntity";
|
|
4
|
+
import { EntityEnum } from "../SessionDriver/SessionDriverAbstract";
|
|
5
|
+
export declare function Entity(type: EntityEnum): BackupSessionRepositoryEntity | BackupSessionTaskEntity | RestoreSessionEntity;
|
|
6
|
+
export declare function EntityConstructorFactory(type: EntityEnum): typeof BackupSessionRepositoryEntity | typeof BackupSessionTaskEntity | typeof RestoreSessionEntity;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityConstructorFactory = exports.Entity = void 0;
|
|
4
|
+
const BackupSessionEntity_1 = require("../Entity/BackupSessionEntity");
|
|
5
|
+
const BackupSessionRepositoryEntity_1 = require("../Entity/BackupSessionRepositoryEntity");
|
|
6
|
+
const BackupSessionTaskEntity_1 = require("../Entity/BackupSessionTaskEntity");
|
|
7
|
+
const RestoreSessionEntity_1 = require("../Entity/RestoreSessionEntity");
|
|
8
|
+
const RestoreSessionRepositoryEntity_1 = require("../Entity/RestoreSessionRepositoryEntity");
|
|
9
|
+
const RestoreSessionTaskEntity_1 = require("../Entity/RestoreSessionTaskEntity");
|
|
10
|
+
const AppError_1 = require("../Error/AppError");
|
|
11
|
+
const SessionDriverAbstract_1 = require("../SessionDriver/SessionDriverAbstract");
|
|
12
|
+
function Entity(type) {
|
|
13
|
+
const constructor = EntityConstructorFactory(type);
|
|
14
|
+
return new constructor();
|
|
15
|
+
}
|
|
16
|
+
exports.Entity = Entity;
|
|
17
|
+
function EntityConstructorFactory(type) {
|
|
18
|
+
if (type === SessionDriverAbstract_1.EntityEnum.BackupSession) {
|
|
19
|
+
return BackupSessionEntity_1.BackupSessionEntity;
|
|
20
|
+
}
|
|
21
|
+
else if (type === SessionDriverAbstract_1.EntityEnum.BackupSessionRepository) {
|
|
22
|
+
return BackupSessionRepositoryEntity_1.BackupSessionRepositoryEntity;
|
|
23
|
+
}
|
|
24
|
+
else if (type === SessionDriverAbstract_1.EntityEnum.BackupSessionTask) {
|
|
25
|
+
return BackupSessionTaskEntity_1.BackupSessionTaskEntity;
|
|
26
|
+
}
|
|
27
|
+
else if (type === SessionDriverAbstract_1.EntityEnum.RestoreSession) {
|
|
28
|
+
return RestoreSessionEntity_1.RestoreSessionEntity;
|
|
29
|
+
}
|
|
30
|
+
else if (type === SessionDriverAbstract_1.EntityEnum.RestoreSessionRepository) {
|
|
31
|
+
return RestoreSessionRepositoryEntity_1.RestoreSessionRepositoryEntity;
|
|
32
|
+
}
|
|
33
|
+
else if (type === SessionDriverAbstract_1.EntityEnum.RestoreSessionTask) {
|
|
34
|
+
return RestoreSessionTaskEntity_1.RestoreSessionTaskEntity;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw new AppError_1.AppError(`Invalid entity type: ${type}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.EntityConstructorFactory = EntityConstructorFactory;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RepositoryFactory = void 0;
|
|
4
|
+
const AppError_1 = require("../Error/AppError");
|
|
5
|
+
const GitRepository_1 = require("../Repository/GitRepository");
|
|
6
|
+
const LocalRepository_1 = require("../Repository/LocalRepository");
|
|
7
|
+
const ResticRepository_1 = require("../Repository/ResticRepository");
|
|
8
|
+
function RepositoryFactory(repository) {
|
|
9
|
+
const type = repository.type;
|
|
10
|
+
if (type === GitRepository_1.gitRepositoryName) {
|
|
11
|
+
return new GitRepository_1.GitRepository(repository);
|
|
12
|
+
}
|
|
13
|
+
else if (type === ResticRepository_1.resticRepositoryName) {
|
|
14
|
+
return new ResticRepository_1.ResticRepository(repository);
|
|
15
|
+
}
|
|
16
|
+
else if (type === LocalRepository_1.localRepositoryName) {
|
|
17
|
+
return new LocalRepository_1.LocalRepository(repository);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
throw new AppError_1.AppError(`Invalid repository type: ${type}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.RepositoryFactory = RepositoryFactory;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskFactory = void 0;
|
|
4
|
+
const AppError_1 = require("../Error/AppError");
|
|
5
|
+
const GitTask_1 = require("../Task/GitTask");
|
|
6
|
+
const MariadbTask_1 = require("../Task/MariadbTask");
|
|
7
|
+
const MssqlTask_1 = require("../Task/MssqlTask");
|
|
8
|
+
const MysqlDumpTask_1 = require("../Task/MysqlDumpTask");
|
|
9
|
+
const PostgresqlDumpTask_1 = require("../Task/PostgresqlDumpTask");
|
|
10
|
+
function TaskFactory(task) {
|
|
11
|
+
if (task.name === GitTask_1.gitTaskName) {
|
|
12
|
+
return new GitTask_1.GitTask(task.config ?? {});
|
|
13
|
+
}
|
|
14
|
+
else if (task.name === MariadbTask_1.mariadbTaskName) {
|
|
15
|
+
return new MariadbTask_1.MariadbTask(task.config ?? {});
|
|
16
|
+
}
|
|
17
|
+
else if (task.name === MysqlDumpTask_1.mysqlDumpTaskName) {
|
|
18
|
+
return new MysqlDumpTask_1.MysqlDumpTask(task.config ?? {});
|
|
19
|
+
}
|
|
20
|
+
else if (task.name === PostgresqlDumpTask_1.postgresqlDumpTaskName) {
|
|
21
|
+
return new PostgresqlDumpTask_1.PostgresqlDumpTask(task.config ?? {});
|
|
22
|
+
}
|
|
23
|
+
else if (task.name === MssqlTask_1.mssqlTaskName) {
|
|
24
|
+
return new MssqlTask_1.MssqlTask(task.config ?? {});
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
throw new AppError_1.AppError(`Invalid task name: ${task["name"]}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.TaskFactory = TaskFactory;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare enum DefinitionEnum {
|
|
2
|
+
config = "config",
|
|
3
|
+
repository = "repository",
|
|
4
|
+
package = "package",
|
|
5
|
+
packageRepository = "package-repository",
|
|
6
|
+
task = "task",
|
|
7
|
+
resticRepository = "restic-repository",
|
|
8
|
+
resticPackageRepository = "restic-package-repository",
|
|
9
|
+
localRepository = "local-repository",
|
|
10
|
+
localPackageRepository = "local-package-repository",
|
|
11
|
+
gitRepository = "git-repository",
|
|
12
|
+
gitPackageRepository = "git-package-repository",
|
|
13
|
+
gitTask = "git-task",
|
|
14
|
+
mariadbTask = "mariadb-task",
|
|
15
|
+
mssqlTask = "mssql-task",
|
|
16
|
+
mysqlDumpTask = "mysql-dump-task",
|
|
17
|
+
postgresqlDumpTask = "postgresql-dump-task",
|
|
18
|
+
sqlDumpTask = "sqldump-task",
|
|
19
|
+
stringListUtil = "stringlist-util",
|
|
20
|
+
prunePolicy = "prune-policy",
|
|
21
|
+
pathsObject = "paths-object"
|
|
22
|
+
}
|
|
23
|
+
export declare function makeRef(type: DefinitionEnum): {
|
|
24
|
+
$ref: string;
|
|
25
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeRef = exports.DefinitionEnum = void 0;
|
|
4
|
+
var DefinitionEnum;
|
|
5
|
+
(function (DefinitionEnum) {
|
|
6
|
+
DefinitionEnum["config"] = "config";
|
|
7
|
+
DefinitionEnum["repository"] = "repository";
|
|
8
|
+
DefinitionEnum["package"] = "package";
|
|
9
|
+
DefinitionEnum["packageRepository"] = "package-repository";
|
|
10
|
+
DefinitionEnum["task"] = "task";
|
|
11
|
+
DefinitionEnum["resticRepository"] = "restic-repository";
|
|
12
|
+
DefinitionEnum["resticPackageRepository"] = "restic-package-repository";
|
|
13
|
+
DefinitionEnum["localRepository"] = "local-repository";
|
|
14
|
+
DefinitionEnum["localPackageRepository"] = "local-package-repository";
|
|
15
|
+
DefinitionEnum["gitRepository"] = "git-repository";
|
|
16
|
+
DefinitionEnum["gitPackageRepository"] = "git-package-repository";
|
|
17
|
+
DefinitionEnum["gitTask"] = "git-task";
|
|
18
|
+
DefinitionEnum["mariadbTask"] = "mariadb-task";
|
|
19
|
+
DefinitionEnum["mssqlTask"] = "mssql-task";
|
|
20
|
+
DefinitionEnum["mysqlDumpTask"] = "mysql-dump-task";
|
|
21
|
+
DefinitionEnum["postgresqlDumpTask"] = "postgresql-dump-task";
|
|
22
|
+
DefinitionEnum["sqlDumpTask"] = "sqldump-task";
|
|
23
|
+
DefinitionEnum["stringListUtil"] = "stringlist-util";
|
|
24
|
+
DefinitionEnum["prunePolicy"] = "prune-policy";
|
|
25
|
+
DefinitionEnum["pathsObject"] = "paths-object";
|
|
26
|
+
})(DefinitionEnum = exports.DefinitionEnum || (exports.DefinitionEnum = {}));
|
|
27
|
+
function makeRef(type) {
|
|
28
|
+
return {
|
|
29
|
+
$ref: `#/definitions/${type}`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.makeRef = makeRef;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.schema = exports.definitions = void 0;
|
|
4
|
+
const Config_1 = require("../Config/Config");
|
|
5
|
+
const PackageConfig_1 = require("../Config/PackageConfig");
|
|
6
|
+
const PackageRepositoryConfig_1 = require("../Config/PackageRepositoryConfig");
|
|
7
|
+
const PrunePolicyConfig_1 = require("../Config/PrunePolicyConfig");
|
|
8
|
+
const RepositoryConfig_1 = require("../Config/RepositoryConfig");
|
|
9
|
+
const TaskConfig_1 = require("../Config/TaskConfig");
|
|
10
|
+
const GitRepository_1 = require("../Repository/GitRepository");
|
|
11
|
+
const LocalRepository_1 = require("../Repository/LocalRepository");
|
|
12
|
+
const ResticRepository_1 = require("../Repository/ResticRepository");
|
|
13
|
+
const GitTask_1 = require("../Task/GitTask");
|
|
14
|
+
const MariadbTask_1 = require("../Task/MariadbTask");
|
|
15
|
+
const MssqlTask_1 = require("../Task/MssqlTask");
|
|
16
|
+
const MysqlDumpTask_1 = require("../Task/MysqlDumpTask");
|
|
17
|
+
const PostgresqlDumpTask_1 = require("../Task/PostgresqlDumpTask");
|
|
18
|
+
const SqlDumpTaskAbstract_1 = require("../Task/SqlDumpTaskAbstract");
|
|
19
|
+
const DefinitionEnum_1 = require("./DefinitionEnum");
|
|
20
|
+
exports.definitions = {
|
|
21
|
+
[DefinitionEnum_1.DefinitionEnum.stringListUtil]: {
|
|
22
|
+
type: "array",
|
|
23
|
+
items: {
|
|
24
|
+
type: "string",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
[DefinitionEnum_1.DefinitionEnum.repository]: RepositoryConfig_1.repositoryConfigDefinition,
|
|
28
|
+
[DefinitionEnum_1.DefinitionEnum.package]: PackageConfig_1.packageConfigDefinition,
|
|
29
|
+
[DefinitionEnum_1.DefinitionEnum.packageRepository]: PackageRepositoryConfig_1.packageRepositoryConfigDefinition,
|
|
30
|
+
[DefinitionEnum_1.DefinitionEnum.task]: TaskConfig_1.taskConfigDefinition,
|
|
31
|
+
[DefinitionEnum_1.DefinitionEnum.gitRepository]: GitRepository_1.gitRepositoryDefinition,
|
|
32
|
+
[DefinitionEnum_1.DefinitionEnum.gitPackageRepository]: GitRepository_1.gitPackageRepositoryDefinition,
|
|
33
|
+
[DefinitionEnum_1.DefinitionEnum.localRepository]: LocalRepository_1.localRepositoryDefinition,
|
|
34
|
+
[DefinitionEnum_1.DefinitionEnum.localPackageRepository]: LocalRepository_1.localPackageRepositoryDefinition,
|
|
35
|
+
[DefinitionEnum_1.DefinitionEnum.resticRepository]: ResticRepository_1.resticRepositoryDefinition,
|
|
36
|
+
[DefinitionEnum_1.DefinitionEnum.resticPackageRepository]: ResticRepository_1.resticPackageRepositoryDefinition,
|
|
37
|
+
[DefinitionEnum_1.DefinitionEnum.gitTask]: GitTask_1.gitTaskDefinition,
|
|
38
|
+
[DefinitionEnum_1.DefinitionEnum.sqlDumpTask]: SqlDumpTaskAbstract_1.sqlDumpTaskDefinition,
|
|
39
|
+
[DefinitionEnum_1.DefinitionEnum.mariadbTask]: MariadbTask_1.mariadbTaskDefinition,
|
|
40
|
+
[DefinitionEnum_1.DefinitionEnum.mssqlTask]: MssqlTask_1.mssqlTaskDefinition,
|
|
41
|
+
[DefinitionEnum_1.DefinitionEnum.mysqlDumpTask]: MysqlDumpTask_1.mysqlDumpTaskDefinition,
|
|
42
|
+
[DefinitionEnum_1.DefinitionEnum.postgresqlDumpTask]: PostgresqlDumpTask_1.postgresqlDumpTaskDefinition,
|
|
43
|
+
[DefinitionEnum_1.DefinitionEnum.config]: Config_1.configDefinition,
|
|
44
|
+
[DefinitionEnum_1.DefinitionEnum.prunePolicy]: PrunePolicyConfig_1.prunePolicyConfigDefinition,
|
|
45
|
+
[DefinitionEnum_1.DefinitionEnum.pathsObject]: PackageConfig_1.pathsObjectDefinition,
|
|
46
|
+
};
|
|
47
|
+
exports.schema = {
|
|
48
|
+
definitions: exports.definitions,
|
|
49
|
+
...(0, DefinitionEnum_1.makeRef)(DefinitionEnum_1.DefinitionEnum.config),
|
|
50
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { RepositoryAbstract, BackupDataType, InitDataType, RestoreDataType, SnapshotsDataType, SnapshotResultType, SnapshotTagEnum, SnapshotTagObjectType, PruneDataType } from "./RepositoryAbstract";
|
|
2
|
+
import { JSONSchema7 } from "json-schema";
|
|
3
|
+
export declare type GitRepositoryConfigType = {
|
|
4
|
+
repo: string;
|
|
5
|
+
branch?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare type GitPackageRepositoryConfigType = {};
|
|
8
|
+
export declare const gitRepositoryName = "git";
|
|
9
|
+
export declare const gitRepositoryDefinition: JSONSchema7;
|
|
10
|
+
export declare const gitPackageRepositoryDefinition: JSONSchema7;
|
|
11
|
+
export declare class GitRepository extends RepositoryAbstract<GitRepositoryConfigType> {
|
|
12
|
+
static refPrefix: string;
|
|
13
|
+
onGetSource(): string;
|
|
14
|
+
static buildSnapshotTagName(tag: Pick<SnapshotTagObjectType, SnapshotTagEnum.PACKAGE | SnapshotTagEnum.ID>): string;
|
|
15
|
+
static buildSnapshotTag(tag: SnapshotTagObjectType): {
|
|
16
|
+
name: string;
|
|
17
|
+
message: string;
|
|
18
|
+
};
|
|
19
|
+
static isSnapshotTag(name: string): boolean;
|
|
20
|
+
static parseSnapshotTag(name: string, message: string): (Omit<SnapshotTagObjectType, "tags"> & {
|
|
21
|
+
tags: string[];
|
|
22
|
+
}) | null;
|
|
23
|
+
static buildBranchName(packageName: string): string;
|
|
24
|
+
onInit(data: InitDataType): Promise<void>;
|
|
25
|
+
onPrune(data: PruneDataType): Promise<void>;
|
|
26
|
+
onSnapshots(data: SnapshotsDataType): Promise<SnapshotResultType[]>;
|
|
27
|
+
onBackup(data: BackupDataType<GitPackageRepositoryConfigType>): Promise<void>;
|
|
28
|
+
onRestore(data: RestoreDataType<GitPackageRepositoryConfigType>): Promise<void>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GitRepository = exports.gitPackageRepositoryDefinition = exports.gitRepositoryDefinition = exports.gitRepositoryName = void 0;
|
|
7
|
+
const AppError_1 = require("../Error/AppError");
|
|
8
|
+
const GitUtil_1 = require("../util/GitUtil");
|
|
9
|
+
const cli_util_1 = require("../util/cli-util");
|
|
10
|
+
const paths_util_1 = require("../util/datatruck/paths-util");
|
|
11
|
+
const fs_util_1 = require("../util/fs-util");
|
|
12
|
+
const string_util_1 = require("../util/string-util");
|
|
13
|
+
const RepositoryAbstract_1 = require("./RepositoryAbstract");
|
|
14
|
+
const assert_1 = require("assert");
|
|
15
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
16
|
+
const fs_extra_1 = require("fs-extra");
|
|
17
|
+
const promises_1 = require("fs/promises");
|
|
18
|
+
const micromatch_1 = require("micromatch");
|
|
19
|
+
const path_1 = require("path");
|
|
20
|
+
exports.gitRepositoryName = "git";
|
|
21
|
+
exports.gitRepositoryDefinition = {
|
|
22
|
+
type: "object",
|
|
23
|
+
additionalProperties: false,
|
|
24
|
+
required: ["repo"],
|
|
25
|
+
properties: {
|
|
26
|
+
repo: { type: "string" },
|
|
27
|
+
branch: { type: "string" },
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
exports.gitPackageRepositoryDefinition = {
|
|
31
|
+
type: "object",
|
|
32
|
+
additionalProperties: false,
|
|
33
|
+
properties: {},
|
|
34
|
+
};
|
|
35
|
+
class GitRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
36
|
+
onGetSource() {
|
|
37
|
+
return this.config.repo;
|
|
38
|
+
}
|
|
39
|
+
static buildSnapshotTagName(tag) {
|
|
40
|
+
return `${GitRepository.refPrefix}/${tag.package}/${tag.id}`;
|
|
41
|
+
}
|
|
42
|
+
static buildSnapshotTag(tag) {
|
|
43
|
+
return {
|
|
44
|
+
name: GitRepository.buildSnapshotTagName(tag),
|
|
45
|
+
message: JSON.stringify(tag),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
static isSnapshotTag(name) {
|
|
49
|
+
return name.startsWith(`${GitRepository.refPrefix}/`);
|
|
50
|
+
}
|
|
51
|
+
static parseSnapshotTag(name, message) {
|
|
52
|
+
if (GitRepository.isSnapshotTag(name))
|
|
53
|
+
return JSON.parse(message);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
static buildBranchName(packageName) {
|
|
57
|
+
return `${GitRepository.refPrefix}/${packageName}`;
|
|
58
|
+
}
|
|
59
|
+
async onInit(data) {
|
|
60
|
+
const git = new GitUtil_1.GitUtil({
|
|
61
|
+
dir: (0, fs_util_1.tmpDir)(GitRepository.name + "-snapshot"),
|
|
62
|
+
log: data.options.verbose,
|
|
63
|
+
});
|
|
64
|
+
if (await git.canBeInit(this.config.repo)) {
|
|
65
|
+
await (0, fs_extra_1.mkdir)(git.options.dir);
|
|
66
|
+
await git.exec(["init", "--bare", this.config.repo]);
|
|
67
|
+
}
|
|
68
|
+
const branchName = this.config.branch ?? "master";
|
|
69
|
+
const existsBranch = await git.checkBranch({
|
|
70
|
+
name: branchName,
|
|
71
|
+
repo: this.config.repo,
|
|
72
|
+
});
|
|
73
|
+
if (!existsBranch) {
|
|
74
|
+
await (0, fs_util_1.mkdirIfNotExists)(git.options.dir);
|
|
75
|
+
await git.clone({
|
|
76
|
+
repo: this.config.repo,
|
|
77
|
+
});
|
|
78
|
+
await git.checkout({
|
|
79
|
+
branchName,
|
|
80
|
+
orphan: true,
|
|
81
|
+
});
|
|
82
|
+
await git.exec(["commit", "-m", "Initial commit", "--allow-empty"]);
|
|
83
|
+
await git.push({ branchName });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async onPrune(data) {
|
|
87
|
+
const git = new GitUtil_1.GitUtil({
|
|
88
|
+
dir: await (0, fs_util_1.mkTmpDir)(GitRepository.name + "-snapshot"),
|
|
89
|
+
log: data.options.verbose,
|
|
90
|
+
});
|
|
91
|
+
const branchName = GitRepository.buildBranchName(data.snapshot.packageName);
|
|
92
|
+
const commitId = await git.fetchCommitId(data.snapshot.originalId);
|
|
93
|
+
await git.clone({ repo: this.config.repo });
|
|
94
|
+
await git.checkout({
|
|
95
|
+
branchName,
|
|
96
|
+
orphan: (await git.checkBranch({ name: branchName })) ? false : true,
|
|
97
|
+
});
|
|
98
|
+
await git.exec([
|
|
99
|
+
"rebase",
|
|
100
|
+
"-X theirs",
|
|
101
|
+
"--rebase-merges",
|
|
102
|
+
"--onto",
|
|
103
|
+
`${commitId}^`,
|
|
104
|
+
commitId,
|
|
105
|
+
]);
|
|
106
|
+
await git.exec(["push", "origin", branchName, "--force-with-lease"]);
|
|
107
|
+
await git.exec(["push", "--delete", "origin", data.snapshot.originalId]);
|
|
108
|
+
}
|
|
109
|
+
async onSnapshots(data) {
|
|
110
|
+
const git = new GitUtil_1.GitUtil({
|
|
111
|
+
dir: await (0, fs_util_1.mkTmpDir)(GitRepository.name + "-snapshot"),
|
|
112
|
+
log: data.options.verbose,
|
|
113
|
+
});
|
|
114
|
+
const pkgPatterns = (0, string_util_1.makePathPatterns)(data.options.packageNames);
|
|
115
|
+
await git.clone({ repo: this.config.repo });
|
|
116
|
+
const tagNames = data.options.ids?.map((id) => `${GitRepository.refPrefix}/*/${id}*`) || [`${GitRepository.refPrefix}/*`];
|
|
117
|
+
const tags = await git.getTags(tagNames);
|
|
118
|
+
return tags
|
|
119
|
+
.reduce((result, tag) => {
|
|
120
|
+
const parsedTag = tag.message
|
|
121
|
+
? GitRepository.parseSnapshotTag(tag.name, tag.message)
|
|
122
|
+
: null;
|
|
123
|
+
if (!parsedTag)
|
|
124
|
+
return result;
|
|
125
|
+
if (pkgPatterns && !(0, micromatch_1.isMatch)(parsedTag.package, pkgPatterns))
|
|
126
|
+
return result;
|
|
127
|
+
if (data.options.tags &&
|
|
128
|
+
!parsedTag.tags.some((value) => data.options.tags?.includes(value)))
|
|
129
|
+
return result;
|
|
130
|
+
result.push({
|
|
131
|
+
originalId: tag.name,
|
|
132
|
+
id: parsedTag.id,
|
|
133
|
+
date: parsedTag.date,
|
|
134
|
+
packageName: parsedTag.package,
|
|
135
|
+
tags: parsedTag.tags,
|
|
136
|
+
});
|
|
137
|
+
return result;
|
|
138
|
+
}, [])
|
|
139
|
+
.sort((a, b) => a.date.localeCompare(b.date));
|
|
140
|
+
}
|
|
141
|
+
async onBackup(data) {
|
|
142
|
+
const pkg = data.package;
|
|
143
|
+
const sourcePath = data.targetPath ?? pkg.path;
|
|
144
|
+
(0, assert_1.ok)(typeof sourcePath === "string");
|
|
145
|
+
if (!(await (0, fs_util_1.existsDir)(sourcePath)))
|
|
146
|
+
throw new AppError_1.AppError(`Package path not exists: ${sourcePath}`);
|
|
147
|
+
const tmpPath = await (0, fs_util_1.mkTmpDir)(GitRepository.name + "-backup");
|
|
148
|
+
const branchName = GitRepository.buildBranchName(data.package.name);
|
|
149
|
+
const git = new GitUtil_1.GitUtil({
|
|
150
|
+
dir: tmpPath,
|
|
151
|
+
log: data.options.verbose,
|
|
152
|
+
});
|
|
153
|
+
if (data.options.verbose)
|
|
154
|
+
(0, cli_util_1.logExec)("cd", [tmpPath]);
|
|
155
|
+
await git.clone({
|
|
156
|
+
repo: this.config.repo,
|
|
157
|
+
});
|
|
158
|
+
await git.checkout({
|
|
159
|
+
branchName,
|
|
160
|
+
orphan: (await git.checkBranch({ name: branchName })) ? false : true,
|
|
161
|
+
});
|
|
162
|
+
await git.removeAll();
|
|
163
|
+
const createdPaths = [];
|
|
164
|
+
const include = await (0, paths_util_1.parsePaths)(pkg.include ?? ["**"], {
|
|
165
|
+
cwd: sourcePath,
|
|
166
|
+
verbose: data.options.verbose,
|
|
167
|
+
});
|
|
168
|
+
const exclude = pkg.exclude
|
|
169
|
+
? await (0, paths_util_1.parsePaths)(pkg.exclude, {
|
|
170
|
+
cwd: sourcePath,
|
|
171
|
+
verbose: data.options.verbose,
|
|
172
|
+
})
|
|
173
|
+
: undefined;
|
|
174
|
+
const stream = await (0, fast_glob_1.default)(include, {
|
|
175
|
+
cwd: sourcePath,
|
|
176
|
+
ignore: exclude,
|
|
177
|
+
dot: true,
|
|
178
|
+
});
|
|
179
|
+
let files = 0;
|
|
180
|
+
for await (const entry of stream) {
|
|
181
|
+
const source = (0, path_1.join)(sourcePath, entry);
|
|
182
|
+
const target = (0, path_1.join)(tmpPath, entry);
|
|
183
|
+
const dir = (0, path_1.dirname)(target);
|
|
184
|
+
if (!createdPaths.includes(dir)) {
|
|
185
|
+
await (0, fs_extra_1.mkdir)(dir, {
|
|
186
|
+
recursive: true,
|
|
187
|
+
});
|
|
188
|
+
createdPaths.push(dir);
|
|
189
|
+
}
|
|
190
|
+
files++;
|
|
191
|
+
await (0, promises_1.copyFile)(source, target);
|
|
192
|
+
}
|
|
193
|
+
if (data.options.verbose)
|
|
194
|
+
console.info(`Copied ${files} files`);
|
|
195
|
+
await git.exec(["add", "--verbose", "."]);
|
|
196
|
+
if (await git.haveChanges())
|
|
197
|
+
await git.exec(["commit", "-m", data.snapshot.id]);
|
|
198
|
+
const nodePkg = (0, fs_util_1.parsePackageFile)();
|
|
199
|
+
const meta = GitRepository.buildSnapshotTag({
|
|
200
|
+
id: data.snapshot.id,
|
|
201
|
+
shortId: data.snapshot.id.slice(0, 8),
|
|
202
|
+
tags: data.options.tags ?? [],
|
|
203
|
+
date: data.snapshot.date,
|
|
204
|
+
package: data.package.name,
|
|
205
|
+
version: nodePkg.version,
|
|
206
|
+
});
|
|
207
|
+
await git.addTag(meta.name, meta.message);
|
|
208
|
+
await git.push({ branchName });
|
|
209
|
+
await git.pushTags();
|
|
210
|
+
await (0, promises_1.rm)(tmpPath, {
|
|
211
|
+
recursive: true,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
async onRestore(data) {
|
|
215
|
+
const restorePath = data.targetPath ?? data.package.restorePath;
|
|
216
|
+
(0, assert_1.ok)(restorePath);
|
|
217
|
+
const tagName = GitRepository.buildSnapshotTagName({
|
|
218
|
+
id: data.snapshot.id,
|
|
219
|
+
package: data.package.name,
|
|
220
|
+
});
|
|
221
|
+
const git = new GitUtil_1.GitUtil({
|
|
222
|
+
dir: restorePath,
|
|
223
|
+
log: data.options.verbose,
|
|
224
|
+
});
|
|
225
|
+
if (data.options.verbose)
|
|
226
|
+
(0, cli_util_1.logExec)("cd", [restorePath]);
|
|
227
|
+
await git.clone({
|
|
228
|
+
repo: this.config.repo,
|
|
229
|
+
branch: tagName,
|
|
230
|
+
});
|
|
231
|
+
await (0, promises_1.rm)(`${restorePath}/.git`, {
|
|
232
|
+
recursive: true,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.GitRepository = GitRepository;
|
|
237
|
+
GitRepository.refPrefix = "dt";
|