@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.
@@ -60,6 +60,7 @@ class RestoreAction {
60
60
  const snapshots = await repoInstance.onSnapshots({
61
61
  options: {
62
62
  packageNames: this.options.packageNames,
63
+ packageTaskNames: this.options.packageTaskNames,
63
64
  ids: [this.options.snapshotId],
64
65
  tags: this.options.tags,
65
66
  },
@@ -7,6 +7,7 @@ export declare type SnapshotsActionOptionsType = {
7
7
  ids?: string[];
8
8
  repositoryNames?: string[];
9
9
  packageNames?: string[];
10
+ packageTaskNames?: string[];
10
11
  repositoryTypes?: string[];
11
12
  verbose?: boolean;
12
13
  tags?: string[];
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: ["Id.", "Date", "Package", "Repository", "Repository type"],
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);
@@ -4,6 +4,7 @@ export declare type MetaDataType = {
4
4
  id: string;
5
5
  date: string;
6
6
  package: string;
7
+ task: string | undefined;
7
8
  tags: string[];
8
9
  version: string;
9
10
  };
@@ -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[]): Required<Partial<SnapshotTagObjectType> & {
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) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datatruck/cli",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "dependencies": {
5
5
  "ajv": "^8.11.0",
6
6
  "async": "^3.2.4",