@datatruck/cli 0.7.0 → 0.8.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/RestoreAction.js +1 -0
- package/Action/SnapshotsAction.d.ts +1 -0
- package/CHANGELOG.md +6 -0
- package/Command/SnapshotsCommand.d.ts +1 -0
- package/Command/SnapshotsCommand.js +15 -1
- package/Repository/GitRepository.js +5 -0
- package/Repository/LocalRepository.d.ts +1 -0
- package/Repository/LocalRepository.js +5 -0
- package/Repository/RepositoryAbstract.d.ts +4 -1
- package/Repository/RepositoryAbstract.js +1 -0
- package/Repository/ResticRepository.d.ts +2 -2
- package/Repository/ResticRepository.js +9 -0
- package/package.json +1 -1
package/Action/RestoreAction.js
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @datatruck/cli
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`8c421ab`](https://github.com/swordev/datatruck/commit/8c421ab0adb6f2d5bc81e91fa387c5daa848f411) Thanks [@juanrgm](https://github.com/juanrgm)! - Add `--package-task` option to snapshot command
|
|
8
|
+
|
|
3
9
|
## 0.7.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -5,6 +5,7 @@ import { CommandAbstract } from "./CommandAbstract";
|
|
|
5
5
|
export declare type SnapshotsCommandOptionsType<TResolved = false> = {
|
|
6
6
|
id?: If<TResolved, string[]>;
|
|
7
7
|
package?: If<TResolved, string[]>;
|
|
8
|
+
packageTask?: If<TResolved, string[]>;
|
|
8
9
|
repository?: If<TResolved, string[]>;
|
|
9
10
|
repositoryType?: If<TResolved, RepositoryConfigType["type"][]>;
|
|
10
11
|
longId?: boolean;
|
|
@@ -64,6 +64,11 @@ class SnapshotsCommand extends CommandAbstract_1.CommandAbstract {
|
|
|
64
64
|
description: "Package names",
|
|
65
65
|
parser: string_util_1.parseStringList,
|
|
66
66
|
},
|
|
67
|
+
packageTask: {
|
|
68
|
+
description: "Package task names",
|
|
69
|
+
option: "-pt,--package-task <values>",
|
|
70
|
+
parser: string_util_1.parseStringList,
|
|
71
|
+
},
|
|
67
72
|
repository: {
|
|
68
73
|
option: "-r,--repository <names>",
|
|
69
74
|
description: "Repository names",
|
|
@@ -87,6 +92,7 @@ class SnapshotsCommand extends CommandAbstract_1.CommandAbstract {
|
|
|
87
92
|
const snapshots = new SnapshotsAction_1.SnapshotsAction(config, {
|
|
88
93
|
ids: this.options.id,
|
|
89
94
|
packageNames: this.options.package,
|
|
95
|
+
packageTaskNames: this.options.packageTask,
|
|
90
96
|
repositoryNames: this.options.repository,
|
|
91
97
|
repositoryTypes: this.options.repositoryType,
|
|
92
98
|
last: this.options.last,
|
|
@@ -103,11 +109,19 @@ class SnapshotsCommand extends CommandAbstract_1.CommandAbstract {
|
|
|
103
109
|
const dataFormat = new DataFormat_1.DataFormat({
|
|
104
110
|
items: await snapshots.exec(),
|
|
105
111
|
table: {
|
|
106
|
-
labels: [
|
|
112
|
+
labels: [
|
|
113
|
+
"Id.",
|
|
114
|
+
"Date",
|
|
115
|
+
"Package",
|
|
116
|
+
"Task",
|
|
117
|
+
"Repository",
|
|
118
|
+
"Repository type",
|
|
119
|
+
],
|
|
107
120
|
handler: (item) => [
|
|
108
121
|
this.options.longId ? item.id : item.id.slice(0, 8),
|
|
109
122
|
item.date.replace("T", " ").replace("Z", ""),
|
|
110
123
|
item.packageName,
|
|
124
|
+
item.packageTaskName || "",
|
|
111
125
|
item.repositoryName,
|
|
112
126
|
item.repositoryType,
|
|
113
127
|
],
|
|
@@ -111,6 +111,7 @@ class GitRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
111
111
|
log: data.options.verbose,
|
|
112
112
|
});
|
|
113
113
|
const pkgPatterns = (0, string_util_1.makePathPatterns)(data.options.packageNames);
|
|
114
|
+
const pkgTaskPatterns = (0, string_util_1.makePathPatterns)(data.options.packageTaskNames);
|
|
114
115
|
await git.clone({ repo: this.config.repo });
|
|
115
116
|
const tagNames = data.options.ids?.map((id) => `${GitRepository.refPrefix}/*/${id}*`) || [`${GitRepository.refPrefix}/*`];
|
|
116
117
|
const tags = await git.getTags(tagNames);
|
|
@@ -123,6 +124,8 @@ class GitRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
123
124
|
return result;
|
|
124
125
|
if (pkgPatterns && !(0, micromatch_1.isMatch)(parsedTag.package, pkgPatterns))
|
|
125
126
|
return result;
|
|
127
|
+
if (pkgTaskPatterns && !(0, micromatch_1.isMatch)(parsedTag.task || "", pkgTaskPatterns))
|
|
128
|
+
return result;
|
|
126
129
|
if (data.options.tags &&
|
|
127
130
|
!parsedTag.tags.some((value) => data.options.tags?.includes(value)))
|
|
128
131
|
return result;
|
|
@@ -131,6 +134,7 @@ class GitRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
131
134
|
id: parsedTag.id,
|
|
132
135
|
date: parsedTag.date,
|
|
133
136
|
packageName: parsedTag.package,
|
|
137
|
+
packageTaskName: parsedTag.task,
|
|
134
138
|
tags: parsedTag.tags,
|
|
135
139
|
});
|
|
136
140
|
return result;
|
|
@@ -201,6 +205,7 @@ class GitRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
201
205
|
tags: data.options.tags ?? [],
|
|
202
206
|
date: data.snapshot.date,
|
|
203
207
|
package: data.package.name,
|
|
208
|
+
task: data.package.task?.name,
|
|
204
209
|
version: nodePkg.version,
|
|
205
210
|
});
|
|
206
211
|
await git.addTag(meta.name, meta.message);
|
|
@@ -125,6 +125,7 @@ class LocalRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
125
125
|
const snapshotNames = await (0, promises_1.readdir)(this.config.outPath);
|
|
126
126
|
const snapshots = [];
|
|
127
127
|
const packagePatterns = (0, string_util_1.makePathPatterns)(data.options.packageNames);
|
|
128
|
+
const taskPatterns = (0, string_util_1.makePathPatterns)(data.options.packageTaskNames);
|
|
128
129
|
for (const snapshotName of snapshotNames) {
|
|
129
130
|
const snapshotNameData = LocalRepository.parseSnapshotName(snapshotName);
|
|
130
131
|
if (!snapshotNameData)
|
|
@@ -137,6 +138,8 @@ class LocalRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
137
138
|
continue;
|
|
138
139
|
const metaPath = (0, path_1.join)(this.config.outPath, snapshotName);
|
|
139
140
|
const meta = await LocalRepository.parseMetaData(metaPath);
|
|
141
|
+
if (taskPatterns && !(0, micromatch_1.isMatch)(meta.task || "", taskPatterns))
|
|
142
|
+
continue;
|
|
140
143
|
if (data.options.ids &&
|
|
141
144
|
!data.options.ids.some((id) => meta.id.startsWith(id)))
|
|
142
145
|
continue;
|
|
@@ -148,6 +151,7 @@ class LocalRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
148
151
|
id: meta.id,
|
|
149
152
|
date: meta.date,
|
|
150
153
|
packageName: meta.package,
|
|
154
|
+
packageTaskName: meta.task,
|
|
151
155
|
tags: meta.tags,
|
|
152
156
|
});
|
|
153
157
|
}
|
|
@@ -288,6 +292,7 @@ class LocalRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
288
292
|
date: data.snapshot.date,
|
|
289
293
|
tags: data.options.tags ?? [],
|
|
290
294
|
package: data.package.name,
|
|
295
|
+
task: data.package.task?.name,
|
|
291
296
|
version: nodePkg.version,
|
|
292
297
|
};
|
|
293
298
|
if (data.options.verbose)
|
|
@@ -11,6 +11,7 @@ export declare type SnapshotType = {
|
|
|
11
11
|
export declare type SnapshotResultType = SnapshotType & {
|
|
12
12
|
originalId: string;
|
|
13
13
|
packageName: string;
|
|
14
|
+
packageTaskName: string | undefined;
|
|
14
15
|
tags: string[];
|
|
15
16
|
};
|
|
16
17
|
export declare type ProgressDataType = {
|
|
@@ -24,7 +25,7 @@ export declare type InitDataType = {
|
|
|
24
25
|
options: InitActionOptionsType;
|
|
25
26
|
};
|
|
26
27
|
export declare type SnapshotsDataType = {
|
|
27
|
-
options: Pick<SnapshotsActionOptionsType, "ids" | "packageNames" | "verbose" | "tags">;
|
|
28
|
+
options: Pick<SnapshotsActionOptionsType, "ids" | "packageNames" | "packageTaskNames" | "verbose" | "tags">;
|
|
28
29
|
};
|
|
29
30
|
export declare type BackupDataType<TPackageConfig> = {
|
|
30
31
|
options: BackupActionOptionsType;
|
|
@@ -53,6 +54,7 @@ export declare enum SnapshotTagEnum {
|
|
|
53
54
|
SHORT_ID = "shortId",
|
|
54
55
|
DATE = "date",
|
|
55
56
|
PACKAGE = "package",
|
|
57
|
+
TASK = "task",
|
|
56
58
|
TAGS = "tags",
|
|
57
59
|
VERSION = "version"
|
|
58
60
|
}
|
|
@@ -61,6 +63,7 @@ export declare type SnapshotTagObjectType = {
|
|
|
61
63
|
[SnapshotTagEnum.SHORT_ID]: string;
|
|
62
64
|
[SnapshotTagEnum.DATE]: string;
|
|
63
65
|
[SnapshotTagEnum.PACKAGE]: string;
|
|
66
|
+
[SnapshotTagEnum.TASK]: string | undefined;
|
|
64
67
|
[SnapshotTagEnum.TAGS]: string[];
|
|
65
68
|
[SnapshotTagEnum.VERSION]: string;
|
|
66
69
|
};
|
|
@@ -7,6 +7,7 @@ var SnapshotTagEnum;
|
|
|
7
7
|
SnapshotTagEnum["SHORT_ID"] = "shortId";
|
|
8
8
|
SnapshotTagEnum["DATE"] = "date";
|
|
9
9
|
SnapshotTagEnum["PACKAGE"] = "package";
|
|
10
|
+
SnapshotTagEnum["TASK"] = "task";
|
|
10
11
|
SnapshotTagEnum["TAGS"] = "tags";
|
|
11
12
|
SnapshotTagEnum["VERSION"] = "version";
|
|
12
13
|
})(SnapshotTagEnum = exports.SnapshotTagEnum || (exports.SnapshotTagEnum = {}));
|
|
@@ -28,9 +28,9 @@ export declare class ResticRepository extends RepositoryAbstract<ResticRepositor
|
|
|
28
28
|
name: SnapshotTagEnum;
|
|
29
29
|
value: string;
|
|
30
30
|
} | null;
|
|
31
|
-
static parseSnapshotTags(tags: string[]):
|
|
31
|
+
static parseSnapshotTags(tags: string[]): SnapshotTagObjectType & {
|
|
32
32
|
tags: string[];
|
|
33
|
-
}
|
|
33
|
+
};
|
|
34
34
|
onGetSource(): string;
|
|
35
35
|
onInit(data: InitDataType): Promise<void>;
|
|
36
36
|
onSnapshots(data: SnapshotsDataType): Promise<SnapshotResultType[]>;
|
|
@@ -126,6 +126,7 @@ class ResticRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
126
126
|
log: data.options.verbose,
|
|
127
127
|
});
|
|
128
128
|
const packagePatterns = (0, string_util_1.makePathPatterns)(data.options.packageNames);
|
|
129
|
+
const taskNamePatterns = (0, string_util_1.makePathPatterns)(data.options.packageTaskNames);
|
|
129
130
|
const result = await restic.snapshots({
|
|
130
131
|
json: true,
|
|
131
132
|
tags: [
|
|
@@ -138,12 +139,15 @@ class ResticRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
138
139
|
return items;
|
|
139
140
|
if (packagePatterns && !(0, micromatch_1.isMatch)(tag.package, packagePatterns))
|
|
140
141
|
return items;
|
|
142
|
+
if (taskNamePatterns && !(0, micromatch_1.isMatch)(tag.task || "", taskNamePatterns))
|
|
143
|
+
return items;
|
|
141
144
|
const itemTags = tag.tags ?? [];
|
|
142
145
|
if (data.options.tags && !itemTags.some((t) => itemTags.includes(t)))
|
|
143
146
|
return items;
|
|
144
147
|
items.push({
|
|
145
148
|
originalId: item.id,
|
|
146
149
|
packageName: tag.package,
|
|
150
|
+
packageTaskName: tag.task,
|
|
147
151
|
date: tag.date,
|
|
148
152
|
id: tag.id,
|
|
149
153
|
tags: itemTags,
|
|
@@ -231,6 +235,11 @@ class ResticRepository extends RepositoryAbstract_1.RepositoryAbstract {
|
|
|
231
235
|
ResticRepository.buildSnapshotTag(RepositoryAbstract_1.SnapshotTagEnum.DATE, data.snapshot.date),
|
|
232
236
|
ResticRepository.buildSnapshotTag(RepositoryAbstract_1.SnapshotTagEnum.VERSION, nodePkg.version),
|
|
233
237
|
packageTag,
|
|
238
|
+
...(data.package.task?.name
|
|
239
|
+
? [
|
|
240
|
+
ResticRepository.buildSnapshotTag(RepositoryAbstract_1.SnapshotTagEnum.TASK, data.package.task?.name),
|
|
241
|
+
]
|
|
242
|
+
: []),
|
|
234
243
|
...(data.options.tags ?? []),
|
|
235
244
|
],
|
|
236
245
|
onStream: async (streamData) => {
|