@datatruck/cli 0.26.2 → 0.28.0
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/Action/BackupAction.d.ts +69 -34
- package/Action/BackupAction.js +284 -244
- package/Action/CleanCacheAction.d.ts +8 -4
- package/Action/CleanCacheAction.js +8 -5
- package/Action/ConfigAction.d.ts +12 -5
- package/Action/ConfigAction.js +14 -18
- package/Action/CopyAction.d.ts +49 -0
- package/Action/CopyAction.js +144 -0
- package/Action/InitAction.d.ts +3 -3
- package/Action/InitAction.js +9 -9
- package/Action/PruneAction.d.ts +9 -9
- package/Action/PruneAction.js +39 -23
- package/Action/RestoreAction.d.ts +48 -23
- package/Action/RestoreAction.js +158 -195
- package/Action/SnapshotsAction.d.ts +8 -8
- package/Action/SnapshotsAction.js +8 -8
- package/CHANGELOG.md +495 -0
- package/Command/BackupCommand.d.ts +6 -4
- package/Command/BackupCommand.js +9 -26
- package/Command/CleanCacheCommand.d.ts +4 -4
- package/Command/CleanCacheCommand.js +26 -5
- package/Command/CommandAbstract.d.ts +10 -7
- package/Command/CommandAbstract.js +4 -1
- package/Command/ConfigCommand.d.ts +6 -9
- package/Command/ConfigCommand.js +13 -8
- package/Command/CopyCommand.d.ts +15 -0
- package/Command/CopyCommand.js +61 -0
- package/Command/InitCommand.d.ts +4 -4
- package/Command/InitCommand.js +11 -15
- package/Command/PruneCommand.d.ts +3 -3
- package/Command/PruneCommand.js +13 -12
- package/Command/RestoreCommand.js +9 -17
- package/Command/SnapshotsCommand.d.ts +4 -4
- package/Command/SnapshotsCommand.js +16 -15
- package/Command/StartServerCommand.d.ts +6 -0
- package/Command/StartServerCommand.js +24 -0
- package/Config/Config.d.ts +11 -0
- package/Config/Config.js +43 -0
- package/Config/PrunePolicyConfig.d.ts +2 -2
- package/Factory/CommandFactory.d.ts +29 -33
- package/Factory/CommandFactory.js +32 -53
- package/Factory/RepositoryFactory.d.ts +1 -1
- package/Factory/RepositoryFactory.js +3 -3
- package/Factory/TaskFactory.d.ts +1 -1
- package/Factory/TaskFactory.js +3 -3
- package/Repository/DatatruckRepository.d.ts +17 -16
- package/Repository/DatatruckRepository.js +131 -149
- package/Repository/GitRepository.d.ts +9 -8
- package/Repository/GitRepository.js +22 -25
- package/Repository/RepositoryAbstract.d.ts +39 -37
- package/Repository/RepositoryAbstract.js +4 -5
- package/Repository/ResticRepository.d.ts +9 -8
- package/Repository/ResticRepository.js +30 -28
- package/Task/GitTask.d.ts +6 -7
- package/Task/GitTask.js +24 -30
- package/Task/MariadbTask.d.ts +4 -5
- package/Task/MariadbTask.js +26 -32
- package/Task/MssqlTask.d.ts +5 -3
- package/Task/MssqlTask.js +11 -12
- package/Task/MysqlDumpTask.d.ts +10 -3
- package/Task/MysqlDumpTask.js +107 -31
- package/Task/ScriptTask.d.ts +23 -18
- package/Task/ScriptTask.js +34 -24
- package/Task/SqlDumpTaskAbstract.d.ts +8 -3
- package/Task/SqlDumpTaskAbstract.js +31 -19
- package/Task/TaskAbstract.d.ts +24 -25
- package/Task/TaskAbstract.js +6 -10
- package/cli.js +14 -5
- package/config.schema.json +124 -3
- package/package.json +4 -5
- package/utils/DataFormat.d.ts +23 -12
- package/utils/DataFormat.js +36 -14
- package/utils/cli.d.ts +2 -9
- package/utils/cli.js +9 -52
- package/utils/datatruck/client.d.ts +24 -0
- package/utils/datatruck/client.js +99 -0
- package/utils/datatruck/config.d.ts +8 -6
- package/utils/datatruck/config.js +18 -3
- package/utils/datatruck/paths.d.ts +5 -9
- package/utils/datatruck/paths.js +2 -2
- package/utils/datatruck/server.d.ts +21 -0
- package/utils/datatruck/server.js +96 -0
- package/utils/datatruck/snapshot.d.ts +2 -2
- package/utils/date.d.ts +7 -3
- package/utils/date.js +22 -14
- package/utils/fs.d.ts +27 -15
- package/utils/fs.js +110 -62
- package/utils/http.d.ts +21 -0
- package/utils/http.js +154 -0
- package/utils/list.d.ts +64 -0
- package/utils/list.js +145 -0
- package/utils/mysql.d.ts +2 -0
- package/utils/mysql.js +21 -2
- package/utils/process.d.ts +1 -0
- package/utils/process.js +24 -31
- package/utils/progress.d.ts +33 -0
- package/utils/progress.js +113 -0
- package/utils/steps.d.ts +11 -0
- package/utils/steps.js +22 -10
- package/utils/stream.d.ts +7 -0
- package/utils/stream.js +10 -0
- package/utils/string.d.ts +0 -1
- package/utils/string.js +1 -13
- package/utils/tar.d.ts +10 -3
- package/utils/tar.js +70 -44
- package/utils/temp.d.ts +26 -0
- package/utils/temp.js +133 -0
- package/utils/virtual-fs.d.ts +37 -0
- package/utils/virtual-fs.js +65 -0
- package/Action/BackupSessionsAction.d.ts +0 -13
- package/Action/BackupSessionsAction.js +0 -18
- package/Action/RestoreSessionsAction.d.ts +0 -13
- package/Action/RestoreSessionsAction.js +0 -18
- package/Command/BackupSessionsCommand.d.ts +0 -12
- package/Command/BackupSessionsCommand.js +0 -92
- package/Command/RestoreSessionsCommand.d.ts +0 -12
- package/Command/RestoreSessionsCommand.js +0 -91
- package/Decorator/EntityDecorator.d.ts +0 -11
- package/Decorator/EntityDecorator.js +0 -17
- package/Entity/BackupSessionEntity.d.ts +0 -6
- package/Entity/BackupSessionEntity.js +0 -25
- package/Entity/BackupSessionRepositoryEntity.d.ts +0 -6
- package/Entity/BackupSessionRepositoryEntity.js +0 -25
- package/Entity/BackupSessionTaskEntity.d.ts +0 -5
- package/Entity/BackupSessionTaskEntity.js +0 -24
- package/Entity/CrudEntityAbstract.d.ts +0 -5
- package/Entity/CrudEntityAbstract.js +0 -9
- package/Entity/RestoreSessionEntity.d.ts +0 -5
- package/Entity/RestoreSessionEntity.js +0 -24
- package/Entity/RestoreSessionRepositoryEntity.d.ts +0 -6
- package/Entity/RestoreSessionRepositoryEntity.js +0 -25
- package/Entity/RestoreSessionTaskEntity.d.ts +0 -5
- package/Entity/RestoreSessionTaskEntity.js +0 -24
- package/Entity/StateEntityAbstract.d.ts +0 -9
- package/Entity/StateEntityAbstract.js +0 -12
- package/Factory/EntityFactory.d.ts +0 -6
- package/Factory/EntityFactory.js +0 -40
- package/SessionDriver/ConsoleSessionDriver.d.ts +0 -42
- package/SessionDriver/ConsoleSessionDriver.js +0 -208
- package/SessionDriver/SessionDriverAbstract.d.ts +0 -77
- package/SessionDriver/SessionDriverAbstract.js +0 -28
- package/SessionDriver/SqliteSessionDriver.d.ts +0 -20
- package/SessionDriver/SqliteSessionDriver.js +0 -173
- package/SessionManager/BackupSessionManager.d.ts +0 -45
- package/SessionManager/BackupSessionManager.js +0 -218
- package/SessionManager/RestoreSessionManager.d.ts +0 -47
- package/SessionManager/RestoreSessionManager.js +0 -218
- package/SessionManager/SessionManagerAbstract.d.ts +0 -18
- package/SessionManager/SessionManagerAbstract.js +0 -36
- package/migrations/001-initial.sql +0 -98
- package/utils/entity.d.ts +0 -4
- package/utils/entity.js +0 -10
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CommandConstructorFactory = exports.
|
|
3
|
+
exports.CommandConstructorFactory = exports.createActionInterface = exports.exec = exports.CommandFactory = exports.CommandEnum = void 0;
|
|
4
4
|
const BackupCommand_1 = require("../Command/BackupCommand");
|
|
5
|
-
const BackupSessionsCommand_1 = require("../Command/BackupSessionsCommand");
|
|
6
5
|
const CleanCacheCommand_1 = require("../Command/CleanCacheCommand");
|
|
7
6
|
const ConfigCommand_1 = require("../Command/ConfigCommand");
|
|
7
|
+
const CopyCommand_1 = require("../Command/CopyCommand");
|
|
8
8
|
const InitCommand_1 = require("../Command/InitCommand");
|
|
9
9
|
const PruneCommand_1 = require("../Command/PruneCommand");
|
|
10
10
|
const RestoreCommand_1 = require("../Command/RestoreCommand");
|
|
11
|
-
const RestoreSessionsCommand_1 = require("../Command/RestoreSessionsCommand");
|
|
12
11
|
const SnapshotsCommand_1 = require("../Command/SnapshotsCommand");
|
|
12
|
+
const StartServerCommand_1 = require("../Command/StartServerCommand");
|
|
13
13
|
const AppError_1 = require("../Error/AppError");
|
|
14
|
+
const stream_1 = require("stream");
|
|
14
15
|
var CommandEnum;
|
|
15
16
|
(function (CommandEnum) {
|
|
16
17
|
CommandEnum["config"] = "config";
|
|
@@ -18,70 +19,48 @@ var CommandEnum;
|
|
|
18
19
|
CommandEnum["snapshots"] = "snapshots";
|
|
19
20
|
CommandEnum["prune"] = "prune";
|
|
20
21
|
CommandEnum["backup"] = "backup";
|
|
21
|
-
CommandEnum["backupSessions"] = "backup-sessions";
|
|
22
22
|
CommandEnum["restore"] = "restore";
|
|
23
|
-
CommandEnum["
|
|
23
|
+
CommandEnum["copy"] = "copy";
|
|
24
24
|
CommandEnum["cleanCache"] = "clean-cache";
|
|
25
|
+
CommandEnum["startServer"] = "start-server";
|
|
25
26
|
})(CommandEnum || (exports.CommandEnum = CommandEnum = {}));
|
|
26
|
-
function CommandFactory(type, globalOptions, options) {
|
|
27
|
+
function CommandFactory(type, globalOptions, options, streams) {
|
|
27
28
|
const constructor = CommandConstructorFactory(type);
|
|
28
|
-
return new constructor(globalOptions, options);
|
|
29
|
+
return new constructor(globalOptions, options, streams);
|
|
29
30
|
}
|
|
30
31
|
exports.CommandFactory = CommandFactory;
|
|
31
|
-
async function exec(type, globalOptions, options) {
|
|
32
|
-
return await CommandFactory(type, globalOptions, options).onExec();
|
|
32
|
+
async function exec(type, globalOptions, options, streams) {
|
|
33
|
+
return await CommandFactory(type, globalOptions, options, streams).onExec();
|
|
33
34
|
}
|
|
34
35
|
exports.exec = exec;
|
|
35
36
|
function createActionInterface(globalOptions) {
|
|
36
37
|
const object = {};
|
|
37
38
|
for (const type of Object.values(CommandEnum)) {
|
|
38
39
|
object[type] = async (options) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
let stdoutData = "";
|
|
41
|
+
const stdout = new stream_1.Writable({
|
|
42
|
+
write(chunk, encoding, callback) {
|
|
43
|
+
stdoutData += chunk.toString();
|
|
44
|
+
process.stdout.write(chunk, encoding, callback);
|
|
45
|
+
},
|
|
46
|
+
}).on("data", (chunk) => (stdoutData += chunk.toString()));
|
|
47
|
+
const end = () => !stdout.closed &&
|
|
48
|
+
new Promise((resolve) => stdout.end().on("close", resolve));
|
|
49
|
+
try {
|
|
50
|
+
const exitCode = await exec(type, { ...globalOptions, outputFormat: "json", verbose: 1 }, options, { stdout });
|
|
51
|
+
if (exitCode !== 0)
|
|
52
|
+
throw new Error(`Invalid exit code: ${exitCode}`);
|
|
53
|
+
await end();
|
|
54
|
+
return JSON.parse(stdoutData);
|
|
46
55
|
}
|
|
47
|
-
|
|
48
|
-
|
|
56
|
+
finally {
|
|
57
|
+
await end();
|
|
49
58
|
}
|
|
50
|
-
if (exitCode !== 0)
|
|
51
|
-
throw new Error(`Invalid exit code: ${exitCode}`);
|
|
52
|
-
return log;
|
|
53
59
|
};
|
|
54
60
|
}
|
|
55
61
|
return object;
|
|
56
62
|
}
|
|
57
63
|
exports.createActionInterface = createActionInterface;
|
|
58
|
-
async function runAndParse(type, run) {
|
|
59
|
-
const parseLog = makeParseLog(type);
|
|
60
|
-
try {
|
|
61
|
-
const exitCode = await run();
|
|
62
|
-
return { exitCode, log: parseLog() };
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
try {
|
|
66
|
-
parseLog();
|
|
67
|
-
}
|
|
68
|
-
catch (_) { }
|
|
69
|
-
throw error;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
exports.runAndParse = runAndParse;
|
|
73
|
-
function makeParseLog(type) {
|
|
74
|
-
const data = [];
|
|
75
|
-
const consoleLog = console.log;
|
|
76
|
-
console.log = console.info = (...items) => {
|
|
77
|
-
data.push(...items);
|
|
78
|
-
};
|
|
79
|
-
return function parseLog() {
|
|
80
|
-
console.log = console.info = consoleLog;
|
|
81
|
-
return JSON.parse(data.flat().join("\n"));
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
exports.makeParseLog = makeParseLog;
|
|
85
64
|
function CommandConstructorFactory(type) {
|
|
86
65
|
if (type === CommandEnum.config) {
|
|
87
66
|
return ConfigCommand_1.ConfigCommand;
|
|
@@ -98,18 +77,18 @@ function CommandConstructorFactory(type) {
|
|
|
98
77
|
else if (type === CommandEnum.backup) {
|
|
99
78
|
return BackupCommand_1.BackupCommand;
|
|
100
79
|
}
|
|
101
|
-
else if (type === CommandEnum.backupSessions) {
|
|
102
|
-
return BackupSessionsCommand_1.BackupSessionsCommand;
|
|
103
|
-
}
|
|
104
80
|
else if (type === CommandEnum.restore) {
|
|
105
81
|
return RestoreCommand_1.RestoreCommand;
|
|
106
82
|
}
|
|
107
|
-
else if (type === CommandEnum.
|
|
108
|
-
return
|
|
83
|
+
else if (type === CommandEnum.copy) {
|
|
84
|
+
return CopyCommand_1.CopyCommand;
|
|
109
85
|
}
|
|
110
86
|
else if (type === CommandEnum.cleanCache) {
|
|
111
87
|
return CleanCacheCommand_1.CleanCacheCommand;
|
|
112
88
|
}
|
|
89
|
+
else if (type === CommandEnum.startServer) {
|
|
90
|
+
return StartServerCommand_1.StartServerCommand;
|
|
91
|
+
}
|
|
113
92
|
else {
|
|
114
93
|
throw new AppError_1.AppError(`Invalid command type: ${type}`);
|
|
115
94
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { RepositoryConfigType } from "../Config/RepositoryConfig";
|
|
2
2
|
import type { RepositoryAbstract } from "../Repository/RepositoryAbstract";
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function createRepo(repository: RepositoryConfigType): RepositoryAbstract<any>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createRepo = void 0;
|
|
4
4
|
const AppError_1 = require("../Error/AppError");
|
|
5
5
|
const DatatruckRepository_1 = require("../Repository/DatatruckRepository");
|
|
6
6
|
const GitRepository_1 = require("../Repository/GitRepository");
|
|
7
7
|
const ResticRepository_1 = require("../Repository/ResticRepository");
|
|
8
|
-
function
|
|
8
|
+
function createRepo(repository) {
|
|
9
9
|
const type = repository.type;
|
|
10
10
|
if (type === GitRepository_1.gitRepositoryName) {
|
|
11
11
|
return new GitRepository_1.GitRepository(repository);
|
|
@@ -20,4 +20,4 @@ function RepositoryFactory(repository) {
|
|
|
20
20
|
throw new AppError_1.AppError(`Invalid repository type: ${type}`);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
exports.
|
|
23
|
+
exports.createRepo = createRepo;
|
package/Factory/TaskFactory.d.ts
CHANGED
package/Factory/TaskFactory.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createTask = void 0;
|
|
4
4
|
const AppError_1 = require("../Error/AppError");
|
|
5
5
|
const GitTask_1 = require("../Task/GitTask");
|
|
6
6
|
const MariadbTask_1 = require("../Task/MariadbTask");
|
|
@@ -8,7 +8,7 @@ const MssqlTask_1 = require("../Task/MssqlTask");
|
|
|
8
8
|
const MysqlDumpTask_1 = require("../Task/MysqlDumpTask");
|
|
9
9
|
const PostgresqlDumpTask_1 = require("../Task/PostgresqlDumpTask");
|
|
10
10
|
const ScriptTask_1 = require("../Task/ScriptTask");
|
|
11
|
-
function
|
|
11
|
+
function createTask(task) {
|
|
12
12
|
if (task.name === GitTask_1.gitTaskName) {
|
|
13
13
|
return new GitTask_1.GitTask(task.config ?? {});
|
|
14
14
|
}
|
|
@@ -31,4 +31,4 @@ function TaskFactory(task) {
|
|
|
31
31
|
throw new AppError_1.AppError(`Invalid task name: ${task["name"]}`);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
exports.
|
|
34
|
+
exports.createTask = createTask;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CompressOptions } from "../utils/tar";
|
|
2
|
-
import { RepositoryAbstract,
|
|
2
|
+
import { RepositoryAbstract, RepoBackupData, RepoInitData, RepoRestoreData, RepoFetchSnapshotsData, Snapshot, RepoPruneData, RepoCopyData } from "./RepositoryAbstract";
|
|
3
3
|
import type { JSONSchema7 } from "json-schema";
|
|
4
4
|
export type MetaDataType = {
|
|
5
5
|
id: string;
|
|
@@ -11,10 +11,11 @@ export type MetaDataType = {
|
|
|
11
11
|
size: number;
|
|
12
12
|
tarStats?: Record<string, {
|
|
13
13
|
files: number;
|
|
14
|
+
size: number;
|
|
14
15
|
}>;
|
|
15
16
|
};
|
|
16
17
|
export type DatatruckRepositoryConfigType = {
|
|
17
|
-
|
|
18
|
+
backend: string;
|
|
18
19
|
compress?: boolean | CompressOptions;
|
|
19
20
|
};
|
|
20
21
|
type PackObject = {
|
|
@@ -33,10 +34,11 @@ export declare const datatruckRepositoryDefinition: JSONSchema7;
|
|
|
33
34
|
export declare const datatruckPackageRepositoryDefinition: JSONSchema7;
|
|
34
35
|
export declare class DatatruckRepository extends RepositoryAbstract<DatatruckRepositoryConfigType> {
|
|
35
36
|
static zipBasenameTpl: string;
|
|
36
|
-
static buildSnapshotName(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
static buildSnapshotName(snapshot: {
|
|
38
|
+
id: string;
|
|
39
|
+
date: string;
|
|
40
|
+
}, pkg: {
|
|
41
|
+
name: string;
|
|
40
42
|
}): string;
|
|
41
43
|
static parseSnapshotName(name: string): {
|
|
42
44
|
snapshotDate: string;
|
|
@@ -44,15 +46,14 @@ export declare class DatatruckRepository extends RepositoryAbstract<DatatruckRep
|
|
|
44
46
|
snapshotShortId: string;
|
|
45
47
|
sourcePath: string;
|
|
46
48
|
} | null;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
onRestore(data: RestoreDataType<DatatruckPackageRepositoryConfigType>): Promise<void>;
|
|
49
|
+
static parseMetaData(data: string): Promise<MetaDataType>;
|
|
50
|
+
getSource(): string;
|
|
51
|
+
fetchDiskStats(config: DatatruckRepositoryConfigType): Promise<import("../utils/fs").DiskStats>;
|
|
52
|
+
init(data: RepoInitData): Promise<void>;
|
|
53
|
+
prune(data: RepoPruneData): Promise<void>;
|
|
54
|
+
fetchSnapshots(data: RepoFetchSnapshotsData): Promise<Snapshot[]>;
|
|
55
|
+
backup(data: RepoBackupData<DatatruckPackageRepositoryConfigType>): Promise<void>;
|
|
56
|
+
copy(data: RepoCopyData<DatatruckRepositoryConfigType>): Promise<void>;
|
|
57
|
+
restore(data: RepoRestoreData<DatatruckPackageRepositoryConfigType>): Promise<void>;
|
|
57
58
|
}
|
|
58
59
|
export {};
|