@datatruck/cli 0.32.3 → 0.34.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.
Files changed (133) hide show
  1. package/config.schema.json +377 -31
  2. package/lib/{Action → actions}/BackupAction.d.ts +13 -19
  3. package/lib/{Action → actions}/BackupAction.js +52 -91
  4. package/lib/{Action → actions}/ConfigAction.d.ts +4 -2
  5. package/lib/{Action → actions}/ConfigAction.js +16 -8
  6. package/lib/{Action → actions}/CopyAction.d.ts +20 -13
  7. package/lib/actions/CopyAction.js +296 -0
  8. package/lib/{Action → actions}/InitAction.d.ts +1 -1
  9. package/lib/{Action → actions}/InitAction.js +3 -3
  10. package/lib/{Action → actions}/PruneAction.d.ts +1 -2
  11. package/lib/{Action → actions}/PruneAction.js +2 -2
  12. package/lib/{Action → actions}/RestoreAction.d.ts +4 -13
  13. package/lib/{Action → actions}/RestoreAction.js +17 -17
  14. package/lib/{Action → actions}/SnapshotsAction.d.ts +2 -3
  15. package/lib/{Action → actions}/SnapshotsAction.js +3 -3
  16. package/lib/cli.d.ts +3 -3
  17. package/lib/cli.js +18 -17
  18. package/lib/commands/BackupCommand.d.ts +45 -0
  19. package/lib/{Command → commands}/BackupCommand.js +7 -6
  20. package/lib/{Command → commands}/CleanCacheCommand.d.ts +4 -2
  21. package/lib/{Command → commands}/CleanCacheCommand.js +6 -5
  22. package/lib/{Command → commands}/CommandAbstract.d.ts +10 -6
  23. package/lib/{Command → commands}/CommandAbstract.js +5 -3
  24. package/lib/commands/ConfigCommand.d.ts +22 -0
  25. package/lib/{Command → commands}/ConfigCommand.js +5 -5
  26. package/lib/commands/CopyCommand.d.ts +17 -0
  27. package/lib/{Command → commands}/CopyCommand.js +7 -6
  28. package/lib/commands/InitCommand.d.ts +19 -0
  29. package/lib/{Command → commands}/InitCommand.js +9 -9
  30. package/lib/{Command → commands}/PruneCommand.d.ts +7 -4
  31. package/lib/{Command → commands}/PruneCommand.js +11 -11
  32. package/lib/commands/RestoreCommand.d.ts +38 -0
  33. package/lib/{Command → commands}/RestoreCommand.js +7 -6
  34. package/lib/{Command → commands}/SnapshotsCommand.d.ts +8 -6
  35. package/lib/{Command → commands}/SnapshotsCommand.js +12 -12
  36. package/lib/{Command → commands}/StartServerCommand.d.ts +4 -2
  37. package/lib/{Command → commands}/StartServerCommand.js +5 -5
  38. package/lib/index.d.ts +20 -23
  39. package/lib/index.js +8 -8
  40. package/lib/{Repository → repositories}/DatatruckRepository.d.ts +6 -2
  41. package/lib/{Repository → repositories}/DatatruckRepository.js +13 -5
  42. package/lib/{Repository → repositories}/GitRepository.d.ts +6 -2
  43. package/lib/{Repository → repositories}/GitRepository.js +8 -3
  44. package/lib/{Repository → repositories}/RepositoryAbstract.d.ts +13 -9
  45. package/lib/{Repository → repositories}/ResticRepository.d.ts +6 -2
  46. package/lib/{Repository → repositories}/ResticRepository.js +17 -10
  47. package/lib/{Task → tasks}/MssqlTask.js +2 -2
  48. package/lib/{Task → tasks}/MysqlDumpTask.js +4 -4
  49. package/lib/{Task → tasks}/ScriptTask.d.ts +2 -2
  50. package/lib/{Task → tasks}/SqlDumpTaskAbstract.js +4 -4
  51. package/lib/{Task → tasks}/TaskAbstract.d.ts +4 -4
  52. package/lib/utils/DataFormat.js +3 -3
  53. package/lib/utils/Restic.d.ts +2 -2
  54. package/lib/utils/Restic.js +12 -10
  55. package/lib/utils/cli.d.ts +9 -3
  56. package/lib/utils/cli.js +17 -1
  57. package/lib/utils/cron.d.ts +11 -0
  58. package/lib/utils/cron.js +27 -0
  59. package/lib/utils/datatruck/client.d.ts +3 -1
  60. package/lib/utils/datatruck/client.js +1 -1
  61. package/lib/utils/datatruck/command.d.ts +29 -0
  62. package/lib/utils/datatruck/command.js +61 -0
  63. package/lib/{Config/RepositoryConfig.d.ts → utils/datatruck/config-repository-type.d.ts} +19 -8
  64. package/lib/{Config/TaskConfig.d.ts → utils/datatruck/config-task-type.d.ts} +6 -6
  65. package/lib/utils/datatruck/config-type.d.ts +51 -0
  66. package/lib/utils/datatruck/config.d.ts +19 -10
  67. package/lib/utils/datatruck/config.js +43 -7
  68. package/lib/utils/datatruck/cron-server.d.ts +27 -6
  69. package/lib/utils/datatruck/cron-server.js +38 -20
  70. package/lib/utils/datatruck/paths.d.ts +2 -2
  71. package/lib/utils/datatruck/report-list.d.ts +14 -0
  72. package/lib/utils/datatruck/report-list.js +57 -0
  73. package/lib/utils/datatruck/repository-server.js +3 -2
  74. package/lib/utils/datatruck/repository.d.ts +16 -0
  75. package/lib/utils/datatruck/repository.js +30 -0
  76. package/lib/utils/datatruck/snapshot.d.ts +2 -2
  77. package/lib/utils/datatruck/task.d.ts +3 -0
  78. package/lib/{Factory/TaskFactory.js → utils/datatruck/task.js} +8 -8
  79. package/lib/utils/date.js +6 -2
  80. package/lib/utils/fs.d.ts +3 -0
  81. package/lib/utils/fs.js +24 -4
  82. package/lib/utils/http.d.ts +3 -1
  83. package/lib/utils/http.js +6 -1
  84. package/lib/utils/list.d.ts +5 -5
  85. package/lib/utils/mysql.js +5 -5
  86. package/lib/utils/object.d.ts +13 -0
  87. package/lib/utils/object.js +32 -1
  88. package/lib/utils/process.js +4 -1
  89. package/lib/utils/string.d.ts +1 -0
  90. package/lib/utils/string.js +7 -3
  91. package/lib/utils/ts.d.ts +16 -0
  92. package/lib/utils/virtual-fs.d.ts +6 -2
  93. package/lib/utils/virtual-fs.js +4 -1
  94. package/lib/utils/watcher.d.ts +10 -0
  95. package/lib/utils/watcher.js +34 -0
  96. package/package.json +4 -4
  97. package/lib/Action/CopyAction.js +0 -164
  98. package/lib/Command/BackupCommand.d.ts +0 -19
  99. package/lib/Command/ConfigCommand.d.ts +0 -15
  100. package/lib/Command/CopyCommand.d.ts +0 -16
  101. package/lib/Command/InitCommand.d.ts +0 -13
  102. package/lib/Command/RestoreCommand.d.ts +0 -17
  103. package/lib/Config/Config.d.ts +0 -28
  104. package/lib/Config/PackageConfig.d.ts +0 -24
  105. package/lib/Config/PackageRepositoryConfig.d.ts +0 -15
  106. package/lib/Config/PrunePolicyConfig.d.ts +0 -2
  107. package/lib/Config/RepositoryConfig.js +0 -2
  108. package/lib/Config/TaskConfig.js +0 -2
  109. package/lib/Factory/CommandFactory.d.ts +0 -45
  110. package/lib/Factory/CommandFactory.js +0 -96
  111. package/lib/Factory/RepositoryFactory.d.ts +0 -3
  112. package/lib/Factory/RepositoryFactory.js +0 -23
  113. package/lib/Factory/TaskFactory.d.ts +0 -3
  114. /package/lib/{Action → actions}/CleanCacheAction.d.ts +0 -0
  115. /package/lib/{Action → actions}/CleanCacheAction.js +0 -0
  116. /package/lib/{Repository → repositories}/RepositoryAbstract.js +0 -0
  117. /package/lib/{Task → tasks}/GitTask.d.ts +0 -0
  118. /package/lib/{Task → tasks}/GitTask.js +0 -0
  119. /package/lib/{Task → tasks}/MariadbTask.d.ts +0 -0
  120. /package/lib/{Task → tasks}/MariadbTask.js +0 -0
  121. /package/lib/{Task → tasks}/MssqlTask.d.ts +0 -0
  122. /package/lib/{Task → tasks}/MysqlDumpTask.d.ts +0 -0
  123. /package/lib/{Task → tasks}/PostgresqlDumpTask.d.ts +0 -0
  124. /package/lib/{Task → tasks}/PostgresqlDumpTask.js +0 -0
  125. /package/lib/{Task → tasks}/ScriptTask.js +0 -0
  126. /package/lib/{Task → tasks}/SqlDumpTaskAbstract.d.ts +0 -0
  127. /package/lib/{Task → tasks}/TaskAbstract.js +0 -0
  128. /package/lib/{Config/Config.js → utils/datatruck/config-repository-type.js} +0 -0
  129. /package/lib/{Config/PackageConfig.js → utils/datatruck/config-task-type.js} +0 -0
  130. /package/lib/{Config/PackageRepositoryConfig.js → utils/datatruck/config-type.js} +0 -0
  131. /package/lib/{Error/AppError.d.ts → utils/datatruck/error.d.ts} +0 -0
  132. /package/lib/{Error/AppError.js → utils/datatruck/error.js} +0 -0
  133. /package/lib/{Config/PrunePolicyConfig.js → utils/ts.js} +0 -0
@@ -1,164 +0,0 @@
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.CopyAction = void 0;
7
- const RepositoryFactory_1 = require("../Factory/RepositoryFactory");
8
- const DataFormat_1 = require("../utils/DataFormat");
9
- const cli_1 = require("../utils/cli");
10
- const config_1 = require("../utils/datatruck/config");
11
- const snapshot_1 = require("../utils/datatruck/snapshot");
12
- const date_1 = require("../utils/date");
13
- const list_1 = require("../utils/list");
14
- const progress_1 = require("../utils/progress");
15
- const temp_1 = require("../utils/temp");
16
- const chalk_1 = __importDefault(require("chalk"));
17
- class CopyAction {
18
- config;
19
- options;
20
- constructor(config, options) {
21
- this.config = config;
22
- this.options = options;
23
- }
24
- dataFormat(result, options = {}) {
25
- const renderTitle = (item, color) => {
26
- let title = item.key.slice(0, 1).toUpperCase() + item.key.slice(1);
27
- return item.key === "copy" && color ? chalk_1.default.cyan(title) : title;
28
- };
29
- const renderData = (item, color, items = []) => {
30
- const g = (v) => (color ? `${chalk_1.default.gray(`(${v})`)}` : `(${v})`);
31
- return item.key === "snapshots"
32
- ? item.data.snapshots.length
33
- : item.key === "copy"
34
- ? `${item.data.packageName} ${g([
35
- item.data.snapshotId.slice(0, 8),
36
- item.data.mirrorRepositoryName,
37
- ].join(" "))}`
38
- : item.key === "summary"
39
- ? (0, cli_1.renderObject)({
40
- errors: item.data.errors,
41
- copied: items.filter((i) => i.key === "copy" && !i.error && !i.data.skipped).length,
42
- skipped: items.filter((i) => i.key === "copy" && !i.error && i.data.skipped).length,
43
- }, color)
44
- : "";
45
- };
46
- return new DataFormat_1.DataFormat({
47
- streams: options.streams,
48
- json: result,
49
- table: {
50
- headers: [
51
- { value: "", width: 3 },
52
- { value: "Title", width: 15 },
53
- { value: "Data" },
54
- { value: "Duration", width: 10 },
55
- { value: "Error", width: 50 },
56
- ],
57
- rows: () => result.map((item) => [
58
- (0, cli_1.renderResult)(item.error),
59
- renderTitle(item, true),
60
- renderData(item, true, result),
61
- (0, date_1.duration)(item.elapsed),
62
- (0, cli_1.renderError)(item.error, options.verbose),
63
- ]),
64
- },
65
- });
66
- }
67
- async exec() {
68
- const { options } = this;
69
- const pm = new progress_1.ProgressManager({
70
- verbose: options.verbose,
71
- tty: options.tty,
72
- mode: options.progress,
73
- });
74
- const l = new list_1.Listr3({ progressManager: pm });
75
- return l
76
- .add(l.$task({
77
- key: "snapshots",
78
- data: { snapshots: [] },
79
- title: {
80
- initial: "Fetch snapshots",
81
- started: "Fetching snapshots",
82
- completed: "Snapshots fetched",
83
- failed: "Snapshot fetch failed",
84
- },
85
- run: async (task, data) => {
86
- if (this.config.minFreeDiskSpace)
87
- await (0, temp_1.ensureFreeDiskTempSpace)(this.config.minFreeDiskSpace);
88
- const sourceRepoConfig = (0, config_1.findRepositoryOrFail)(this.config, this.options.repositoryName);
89
- const repo = (0, RepositoryFactory_1.createRepo)(sourceRepoConfig);
90
- let snapshots = await repo.fetchSnapshots({
91
- options: {
92
- ids: this.options.ids,
93
- packageNames: this.options.packageNames,
94
- packageTaskNames: this.options.packageTaskNames,
95
- },
96
- });
97
- if (this.options.last)
98
- snapshots = (0, snapshot_1.groupAndFilter)(snapshots, ["packageName"], {
99
- last: this.options.last,
100
- }).map(({ item }) => item);
101
- data.snapshots = snapshots;
102
- task.title = `Snapshots fetched: ${snapshots.length}`;
103
- if (!snapshots.length)
104
- throw new Error("No snapshots found");
105
- const repositoryNames2 = this.options.repositoryNames2 ||
106
- this.config.repositories
107
- .filter((r) => r.name !== sourceRepoConfig.name &&
108
- r.type === sourceRepoConfig.type &&
109
- (0, config_1.filterRepository)(r, "backup"))
110
- .map((r) => r.name);
111
- if (!repositoryNames2.length)
112
- throw new Error("No mirror snapshots found");
113
- return snapshots.flatMap((snapshot) => repositoryNames2.map((repo2) => {
114
- const id = snapshot.id.slice(0, 8);
115
- const pkgName = snapshot.packageName;
116
- return l.$task({
117
- key: "copy",
118
- keyIndex: [snapshot.packageName, repo2, snapshot.id],
119
- data: {
120
- snapshotId: snapshot.id,
121
- packageName: snapshot.packageName,
122
- repositoryName: sourceRepoConfig.name,
123
- mirrorRepositoryName: repo2,
124
- skipped: false,
125
- },
126
- title: {
127
- initial: `Copy snapshot: ${pkgName} (${id}) » ${repo2}`,
128
- started: `Copying snapshot: ${pkgName} (${id}) » ${repo2}`,
129
- completed: `Snapshot copied: ${pkgName} (${id}) » ${repo2}`,
130
- failed: `Snapshot copy failed: ${pkgName} (${id}) » ${repo2}`,
131
- },
132
- exitOnError: false,
133
- run: async (task, data) => {
134
- const mirrorConfig = (0, config_1.findRepositoryOrFail)(this.config, repo2);
135
- const mirrorRepo = (0, RepositoryFactory_1.createRepo)(mirrorConfig);
136
- (0, config_1.ensureSameRepositoryType)(sourceRepoConfig, mirrorConfig);
137
- const currentCopies = await mirrorRepo.fetchSnapshots({
138
- options: {
139
- ids: [snapshot.id],
140
- packageNames: [snapshot.packageName],
141
- },
142
- });
143
- if (currentCopies.length) {
144
- data.skipped = true;
145
- return task.skip(`Already exists at ${mirrorConfig.name}: ${pkgName} (${id})`);
146
- }
147
- if (this.config.minFreeDiskSpace)
148
- await mirrorRepo.ensureFreeDiskSpace(mirrorConfig.config, this.config.minFreeDiskSpace);
149
- await repo.copy({
150
- mirrorRepositoryConfig: mirrorConfig.config,
151
- options: { verbose: this.options.verbose },
152
- package: { name: snapshot.packageName },
153
- snapshot,
154
- onProgress: (p) => pm.update(p, (d) => (task.output = d)),
155
- });
156
- },
157
- });
158
- }));
159
- },
160
- }))
161
- .exec();
162
- }
163
- }
164
- exports.CopyAction = CopyAction;
@@ -1,19 +0,0 @@
1
- import { BackupAction } from "../Action/BackupAction";
2
- import { RepositoryConfig } from "../Config/RepositoryConfig";
3
- import { If, Unwrap } from "../utils/ts";
4
- import { CommandAbstract } from "./CommandAbstract";
5
- export type BackupCommandOptions<TResolved = false> = {
6
- package?: If<TResolved, string[]>;
7
- packageTask?: If<TResolved, string[]>;
8
- repository?: If<TResolved, string[]>;
9
- repositoryType?: If<TResolved, RepositoryConfig["type"][]>;
10
- tag?: If<TResolved, string[]>;
11
- dryRun?: boolean;
12
- date?: string;
13
- prune?: boolean;
14
- };
15
- export type BackupCommandResult = Unwrap<BackupAction["exec"]>;
16
- export declare class BackupCommand extends CommandAbstract<BackupCommandOptions<false>, BackupCommandOptions<true>> {
17
- onOptions(): import("../utils/cli").OptionsType<BackupCommandOptions<false>, BackupCommandOptions<true>>;
18
- onExec(): Promise<1 | 0>;
19
- }
@@ -1,15 +0,0 @@
1
- import { ConfigAction } from "../Action/ConfigAction";
2
- import { RepositoryConfig } from "../Config/RepositoryConfig";
3
- import { If, Unwrap } from "../utils/ts";
4
- import { CommandAbstract } from "./CommandAbstract";
5
- export type ConfigCommandOptions<TResolved = false> = {
6
- package?: If<TResolved, string[]>;
7
- packageTask?: If<TResolved, string[]>;
8
- repository?: If<TResolved, string[]>;
9
- repositoryType?: If<TResolved, RepositoryConfig["type"][]>;
10
- };
11
- export type ConfigCommandResult = Unwrap<ConfigAction["exec"]>;
12
- export declare class ConfigCommand extends CommandAbstract<ConfigCommandOptions<false>, ConfigCommandOptions<true>> {
13
- onOptions(): import("../utils/cli").OptionsType<ConfigCommandOptions<false>, ConfigCommandOptions<true>>;
14
- onExec(): Promise<number>;
15
- }
@@ -1,16 +0,0 @@
1
- import { CopyAction } from "../Action/CopyAction";
2
- import { If, Unwrap } from "../utils/ts";
3
- import { CommandAbstract } from "./CommandAbstract";
4
- export type CopyCommandOptionsType<TResolved = false> = {
5
- id?: If<TResolved, string[]>;
6
- last?: number;
7
- package?: If<TResolved, string[]>;
8
- packageTask?: If<TResolved, string[]>;
9
- repository: string;
10
- repository2?: If<TResolved, string[]>;
11
- };
12
- export type CopyCommandResult = Unwrap<CopyAction["exec"]>;
13
- export declare class CopyCommand extends CommandAbstract<CopyCommandOptionsType<false>, CopyCommandOptionsType<true>> {
14
- onOptions(): import("../utils/cli").OptionsType<CopyCommandOptionsType<false>, CopyCommandOptionsType<true>>;
15
- onExec(): Promise<1 | 0>;
16
- }
@@ -1,13 +0,0 @@
1
- import { InitAction } from "../Action/InitAction";
2
- import { RepositoryConfig } from "../Config/RepositoryConfig";
3
- import { If, Unwrap } from "../utils/ts";
4
- import { CommandAbstract } from "./CommandAbstract";
5
- export type InitCommandOptions<TResolved = false> = {
6
- repository?: If<TResolved, string[]>;
7
- repositoryType?: If<TResolved, RepositoryConfig["type"][]>;
8
- };
9
- export type InitCommandResult = Unwrap<InitAction["exec"]>;
10
- export declare class InitCommand extends CommandAbstract<InitCommandOptions<false>, InitCommandOptions<true>> {
11
- onOptions(): import("../utils/cli").OptionsType<InitCommandOptions<false>, InitCommandOptions<true>>;
12
- onExec(): Promise<number>;
13
- }
@@ -1,17 +0,0 @@
1
- import { RepositoryConfig } from "../Config/RepositoryConfig";
2
- import { If } from "../utils/ts";
3
- import { CommandAbstract } from "./CommandAbstract";
4
- export type RestoreCommandOptionsType<TResolved = false> = {
5
- id: string;
6
- package?: If<TResolved, string[]>;
7
- packageTask?: If<TResolved, string[]>;
8
- packageConfig?: boolean;
9
- repository?: If<TResolved, string[]>;
10
- repositoryType?: If<TResolved, RepositoryConfig["type"][]>;
11
- tag?: If<TResolved, string[]>;
12
- initial?: boolean;
13
- };
14
- export declare class RestoreCommand extends CommandAbstract<RestoreCommandOptionsType<false>, RestoreCommandOptionsType<true>> {
15
- onOptions(): import("../utils/cli").OptionsType<RestoreCommandOptionsType<false>, RestoreCommandOptionsType<true>>;
16
- onExec(): Promise<1 | 0>;
17
- }
@@ -1,28 +0,0 @@
1
- import { DataFormatType } from "../utils/DataFormat";
2
- import { DatatruckCronServerOptions } from "../utils/datatruck/cron-server";
3
- import { DatatruckRepositoryServerOptions } from "../utils/datatruck/repository-server";
4
- import { ReportStep } from "../utils/reportSteps";
5
- import { SpawnStep } from "../utils/spawnSteps";
6
- import { PackageConfig } from "./PackageConfig";
7
- import { PrunePolicyConfig } from "./PrunePolicyConfig";
8
- import { RepositoryConfig } from "./RepositoryConfig";
9
- export type Config = {
10
- $schema?: string;
11
- tempDir?: string;
12
- minFreeDiskSpace?: string | number;
13
- repositories: RepositoryConfig[];
14
- packages: PackageConfig[];
15
- server?: DatatruckServerOptions;
16
- reports?: ReportConfig[];
17
- prunePolicy?: PrunePolicyConfig;
18
- };
19
- export type DatatruckServerOptions = {
20
- log?: boolean;
21
- repository?: DatatruckRepositoryServerOptions;
22
- cron?: DatatruckCronServerOptions;
23
- };
24
- export type ReportConfig = {
25
- when?: "success" | "error";
26
- format?: Exclude<DataFormatType, "custom" | "tpl">;
27
- run: SpawnStep | ReportStep;
28
- };
@@ -1,24 +0,0 @@
1
- import { SpawnStep } from "../utils/spawnSteps";
2
- import { PackageRepositoryConfig } from "./PackageRepositoryConfig";
3
- import { PrunePolicyConfig } from "./PrunePolicyConfig";
4
- import type { TaskConfig } from "./TaskConfig";
5
- export type Meta = {
6
- [name: string]: any;
7
- };
8
- export type PackageConfig = {
9
- name: string;
10
- enabled?: boolean;
11
- task?: TaskConfig;
12
- path?: string;
13
- restorePath?: string;
14
- meta?: Meta;
15
- restorePermissions?: {
16
- uid: string | number;
17
- gid: string | number;
18
- };
19
- include?: (string | SpawnStep)[];
20
- exclude?: (string | SpawnStep)[];
21
- repositoryNames?: string[];
22
- prunePolicy?: PrunePolicyConfig;
23
- repositoryConfigs?: PackageRepositoryConfig[];
24
- };
@@ -1,15 +0,0 @@
1
- import { DatatruckPackageRepositoryConfig, datatruckRepositoryName } from "../Repository/DatatruckRepository";
2
- import { GitPackageRepositoryConfig, gitRepositoryName } from "../Repository/GitRepository";
3
- import { ResticPackageRepositoryConfig, resticRepositoryName } from "../Repository/ResticRepository";
4
- export type PackageRepositoryConfig = {
5
- names?: string[];
6
- } & ({
7
- type: typeof resticRepositoryName;
8
- config: ResticPackageRepositoryConfig;
9
- } | {
10
- type: typeof datatruckRepositoryName;
11
- config: DatatruckPackageRepositoryConfig;
12
- } | {
13
- type: typeof gitRepositoryName;
14
- config: GitPackageRepositoryConfig;
15
- });
@@ -1,2 +0,0 @@
1
- import { PruneActionsOptions } from "../Action/PruneAction";
2
- export type PrunePolicyConfig = Pick<PruneActionsOptions, "keepDaily" | "keepHourly" | "keepMinutely" | "keepLast" | "keepMonthly" | "keepWeekly" | "keepYearly" | "groupBy" | "tags">;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,45 +0,0 @@
1
- import { CleanCacheActionOptions } from "../Action/CleanCacheAction";
2
- import { BackupCommandOptions, BackupCommandResult } from "../Command/BackupCommand";
3
- import { GlobalOptions } from "../Command/CommandAbstract";
4
- import { ConfigCommandResult, ConfigCommandOptions } from "../Command/ConfigCommand";
5
- import { CopyCommandOptionsType } from "../Command/CopyCommand";
6
- import { InitCommandResult, InitCommandOptions } from "../Command/InitCommand";
7
- import { PruneCommandOptions } from "../Command/PruneCommand";
8
- import { RestoreCommandOptionsType } from "../Command/RestoreCommand";
9
- import { SnapshotsCommandResult, SnapshotsCommandOptions } from "../Command/SnapshotsCommand";
10
- import { StartServerCommand, StartServerCommandOptions } from "../Command/StartServerCommand";
11
- import { Streams } from "../utils/stream";
12
- export declare enum CommandEnum {
13
- config = "config",
14
- init = "init",
15
- snapshots = "snapshots",
16
- prune = "prune",
17
- backup = "backup",
18
- restore = "restore",
19
- copy = "copy",
20
- cleanCache = "clean-cache",
21
- startServer = "start-server"
22
- }
23
- export type OptionsMap = {
24
- [CommandEnum.config]: ConfigCommandOptions;
25
- [CommandEnum.init]: InitCommandOptions;
26
- [CommandEnum.snapshots]: SnapshotsCommandOptions;
27
- [CommandEnum.prune]: PruneCommandOptions;
28
- [CommandEnum.backup]: BackupCommandOptions;
29
- [CommandEnum.restore]: RestoreCommandOptionsType;
30
- [CommandEnum.copy]: CopyCommandOptionsType;
31
- [CommandEnum.cleanCache]: CleanCacheActionOptions;
32
- [CommandEnum.startServer]: StartServerCommandOptions;
33
- };
34
- export type LogMap = {
35
- [CommandEnum.config]: ConfigCommandResult;
36
- [CommandEnum.init]: InitCommandResult;
37
- [CommandEnum.snapshots]: SnapshotsCommandResult;
38
- [CommandEnum.backup]: BackupCommandResult;
39
- };
40
- export declare function CommandFactory<TCommand extends keyof OptionsMap>(type: TCommand, globalOptions: GlobalOptions<true>, options: OptionsMap[TCommand], streams?: Partial<Streams>, configPath?: string): StartServerCommand;
41
- export declare function exec<TCommand extends keyof OptionsMap>(type: TCommand, globalOptions: GlobalOptions<true>, options: OptionsMap[TCommand], streams?: Partial<Streams>): Promise<number>;
42
- export declare function createActionInterface(globalOptions: GlobalOptions<true>): {
43
- [K in keyof OptionsMap as `${K}`]: (options: OptionsMap[K]) => Promise<K extends keyof LogMap ? LogMap[K] : never>;
44
- };
45
- export declare function CommandConstructorFactory(type: CommandEnum): typeof StartServerCommand;
@@ -1,96 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CommandConstructorFactory = exports.createActionInterface = exports.exec = exports.CommandFactory = exports.CommandEnum = void 0;
4
- const BackupCommand_1 = require("../Command/BackupCommand");
5
- const CleanCacheCommand_1 = require("../Command/CleanCacheCommand");
6
- const ConfigCommand_1 = require("../Command/ConfigCommand");
7
- const CopyCommand_1 = require("../Command/CopyCommand");
8
- const InitCommand_1 = require("../Command/InitCommand");
9
- const PruneCommand_1 = require("../Command/PruneCommand");
10
- const RestoreCommand_1 = require("../Command/RestoreCommand");
11
- const SnapshotsCommand_1 = require("../Command/SnapshotsCommand");
12
- const StartServerCommand_1 = require("../Command/StartServerCommand");
13
- const AppError_1 = require("../Error/AppError");
14
- const stream_1 = require("stream");
15
- var CommandEnum;
16
- (function (CommandEnum) {
17
- CommandEnum["config"] = "config";
18
- CommandEnum["init"] = "init";
19
- CommandEnum["snapshots"] = "snapshots";
20
- CommandEnum["prune"] = "prune";
21
- CommandEnum["backup"] = "backup";
22
- CommandEnum["restore"] = "restore";
23
- CommandEnum["copy"] = "copy";
24
- CommandEnum["cleanCache"] = "clean-cache";
25
- CommandEnum["startServer"] = "start-server";
26
- })(CommandEnum || (exports.CommandEnum = CommandEnum = {}));
27
- function CommandFactory(type, globalOptions, options, streams, configPath) {
28
- const constructor = CommandConstructorFactory(type);
29
- return new constructor(globalOptions, options, streams, configPath);
30
- }
31
- exports.CommandFactory = CommandFactory;
32
- async function exec(type, globalOptions, options, streams) {
33
- return await CommandFactory(type, globalOptions, options, streams).onExec();
34
- }
35
- exports.exec = exec;
36
- function createActionInterface(globalOptions) {
37
- const object = {};
38
- for (const type of Object.values(CommandEnum)) {
39
- object[type] = async (options) => {
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);
55
- }
56
- finally {
57
- await end();
58
- }
59
- };
60
- }
61
- return object;
62
- }
63
- exports.createActionInterface = createActionInterface;
64
- function CommandConstructorFactory(type) {
65
- if (type === CommandEnum.config) {
66
- return ConfigCommand_1.ConfigCommand;
67
- }
68
- else if (type === CommandEnum.init) {
69
- return InitCommand_1.InitCommand;
70
- }
71
- else if (type === CommandEnum.snapshots) {
72
- return SnapshotsCommand_1.SnapshotsCommand;
73
- }
74
- else if (type === CommandEnum.prune) {
75
- return PruneCommand_1.PruneCommand;
76
- }
77
- else if (type === CommandEnum.backup) {
78
- return BackupCommand_1.BackupCommand;
79
- }
80
- else if (type === CommandEnum.restore) {
81
- return RestoreCommand_1.RestoreCommand;
82
- }
83
- else if (type === CommandEnum.copy) {
84
- return CopyCommand_1.CopyCommand;
85
- }
86
- else if (type === CommandEnum.cleanCache) {
87
- return CleanCacheCommand_1.CleanCacheCommand;
88
- }
89
- else if (type === CommandEnum.startServer) {
90
- return StartServerCommand_1.StartServerCommand;
91
- }
92
- else {
93
- throw new AppError_1.AppError(`Invalid command type: ${type}`);
94
- }
95
- }
96
- exports.CommandConstructorFactory = CommandConstructorFactory;
@@ -1,3 +0,0 @@
1
- import type { RepositoryConfig } from "../Config/RepositoryConfig";
2
- import type { RepositoryAbstract } from "../Repository/RepositoryAbstract";
3
- export declare function createRepo(repository: RepositoryConfig): RepositoryAbstract<any>;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRepo = void 0;
4
- const AppError_1 = require("../Error/AppError");
5
- const DatatruckRepository_1 = require("../Repository/DatatruckRepository");
6
- const GitRepository_1 = require("../Repository/GitRepository");
7
- const ResticRepository_1 = require("../Repository/ResticRepository");
8
- function createRepo(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 === DatatruckRepository_1.datatruckRepositoryName) {
17
- return new DatatruckRepository_1.DatatruckRepository(repository);
18
- }
19
- else {
20
- throw new AppError_1.AppError(`Invalid repository type: ${type}`);
21
- }
22
- }
23
- exports.createRepo = createRepo;
@@ -1,3 +0,0 @@
1
- import { TaskConfig } from "../Config/TaskConfig";
2
- import type { TaskAbstract } from "../Task/TaskAbstract";
3
- export declare function createTask(task: TaskConfig): TaskAbstract;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes