@teambit/builder 1.0.978 → 1.0.980

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.
@@ -9,6 +9,7 @@ import { ComponentIdList } from '@teambit/component-id';
9
9
  import pMapSeries from 'p-map-series';
10
10
  import minimatch from 'minimatch';
11
11
  import { ArtifactFiles } from '@teambit/component.sources';
12
+ import { isValidPath } from '@teambit/legacy.utils';
12
13
  import type { BuilderMain } from '../builder.main.runtime';
13
14
  import type { ArtifactsOpts } from './artifacts.cmd';
14
15
  import { ArtifactList } from './artifact-list';
@@ -37,6 +38,8 @@ type ArtifactListPerId = {
37
38
  };
38
39
 
39
40
  export class ArtifactExtractor {
41
+ savedFilesCount = 0;
42
+
40
43
  constructor(
41
44
  private componentMain: ComponentMain,
42
45
  private builder: BuilderMain,
@@ -48,8 +51,16 @@ export class ArtifactExtractor {
48
51
  const host = this.componentMain.getHost();
49
52
  const ids = await host.idsByPattern(this.pattern);
50
53
  const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;
51
- // import in case the components are with build status "pending"
52
- await scope.legacyScope.scopeImporter.importWithoutDeps(ComponentIdList.fromArray(ids), { reason: 'artifact' });
54
+ // re-import the version objects so we pick up any builder data added by the remote build
55
+ // pipeline after the local snap was created (the local Version may have been stored with
56
+ // empty BuilderAspect data — the Version hash excludes extension data, so it isn't replaced
57
+ // on a normal cached import). passing the current lane routes the fetch to the lane's scope
58
+ // where snaps actually live, and the lane-aware fetcher writes back any updated Version.
59
+ const currentLane = await scope.legacyScope.getCurrentLaneObject();
60
+ await scope.legacyScope.scopeImporter.importWithoutDeps(ComponentIdList.fromArray(ids), {
61
+ lane: currentLane,
62
+ reason: 'to refresh build artifacts',
63
+ });
53
64
  const components = await host.getMany(ids);
54
65
  const artifactListPerId: ArtifactListPerId[] = components.map((component) => {
55
66
  return {
@@ -58,7 +69,7 @@ export class ArtifactExtractor {
58
69
  };
59
70
  });
60
71
  this.filterByOptions(artifactListPerId);
61
- await this.saveFilesInFileSystemIfAsked(artifactListPerId);
72
+ this.savedFilesCount = await this.saveFilesInFileSystemIfAsked(artifactListPerId);
62
73
 
63
74
  return this.artifactsObjectsToExtractorResults(artifactListPerId);
64
75
  }
@@ -73,20 +84,30 @@ export class ArtifactExtractor {
73
84
  });
74
85
  }
75
86
 
76
- private async saveFilesInFileSystemIfAsked(artifactListPerId: ArtifactListPerId[]) {
87
+ private async saveFilesInFileSystemIfAsked(artifactListPerId: ArtifactListPerId[]): Promise<number> {
77
88
  const outDir = this.options.outDir;
78
89
  if (!outDir) {
79
- return;
90
+ return 0;
80
91
  }
81
92
  const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;
93
+ let totalSaved = 0;
82
94
  // @todo: optimize this to first import all missing hashes.
83
95
  await pMapSeries(artifactListPerId, async ({ id, artifacts }) => {
84
96
  const vinyls = await artifacts.getVinylsAndImportIfMissing(id, scope.legacyScope);
85
97
  // make sure the component-dir is just one dir. without this, every slash in the component-id will create a new dir.
86
98
  const idAsFilename = filenamify(id.toStringWithoutVersion(), { replacement: '_' });
87
99
  const compPath = path.join(outDir, idAsFilename);
88
- await Promise.all(vinyls.map((vinyl) => fs.outputFile(path.join(compPath, vinyl.path), vinyl.contents)));
100
+ await Promise.all(
101
+ vinyls.map((vinyl) => {
102
+ if (!isValidPath(vinyl.path)) {
103
+ throw new Error(`refusing to write artifact "${vinyl.path}" for ${id.toString()}: unsafe path`);
104
+ }
105
+ return fs.outputFile(path.join(compPath, vinyl.path), vinyl.contents);
106
+ })
107
+ );
108
+ totalSaved += vinyls.length;
89
109
  });
110
+ return totalSaved;
90
111
  }
91
112
 
92
113
  private artifactsObjectsToExtractorResults(artifactListPerId: ArtifactListPerId[]): ExtractorResult[] {
@@ -1,5 +1,5 @@
1
1
  import type { Command, CommandOptions } from '@teambit/cli';
2
- import { formatTitle, formatSuccessSummary } from '@teambit/cli';
2
+ import { formatTitle, formatSuccessSummary, formatWarningSummary } from '@teambit/cli';
3
3
  import chalk from 'chalk';
4
4
  import { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';
5
5
  import type { ComponentMain } from '@teambit/component';
@@ -52,6 +52,10 @@ use --out-dir to download artifacts locally for inspection or deployment purpose
52
52
  async report([componentPattern]: [string], artifactsOpts: ArtifactsOpts): Promise<string> {
53
53
  const artifactExtractor = new ArtifactExtractor(this.componentMain, this.builder, componentPattern, artifactsOpts);
54
54
  const list = await artifactExtractor.list();
55
+ const totalArtifacts = list.reduce((sum, r) => sum + r.artifacts.length, 0);
56
+ if (totalArtifacts === 0) {
57
+ return formatWarningSummary(`no artifacts found for "${componentPattern}"`);
58
+ }
55
59
  const grouped = artifactExtractor.groupResultsByAspect(list);
56
60
  const outputArtifacts = (aspectId: string, artifactData: ExtractorArtifactResult[]) => {
57
61
  const title = formatTitle(aspectId);
@@ -72,7 +76,7 @@ use --out-dir to download artifacts locally for inspection or deployment purpose
72
76
  return `${idStr}\n${artifacts}`;
73
77
  };
74
78
  const footer = artifactsOpts.outDir
75
- ? `\n\n${formatSuccessSummary('The above files were saved to the file system')}`
79
+ ? `\n\n${formatSuccessSummary(`${artifactExtractor.savedFilesCount} file(s) saved to "${artifactsOpts.outDir}"`)}`
76
80
  : '';
77
81
  return grouped.map(outputResult).join('\n\n') + footer;
78
82
  }
@@ -23,6 +23,7 @@ export declare class ArtifactExtractor {
23
23
  private builder;
24
24
  private pattern;
25
25
  private options;
26
+ savedFilesCount: number;
26
27
  constructor(componentMain: ComponentMain, builder: BuilderMain, pattern: string, options: ArtifactsOpts);
27
28
  list(): Promise<ExtractorResult[]>;
28
29
  groupResultsByAspect(extractorResult: ExtractorResult[]): {
@@ -60,6 +60,13 @@ function _component() {
60
60
  };
61
61
  return data;
62
62
  }
63
+ function _legacy() {
64
+ const data = require("@teambit/legacy.utils");
65
+ _legacy = function () {
66
+ return data;
67
+ };
68
+ return data;
69
+ }
63
70
  function _artifactList() {
64
71
  const data = require("./artifact-list");
65
72
  _artifactList = function () {
@@ -75,20 +82,30 @@ function _artifact() {
75
82
  return data;
76
83
  }
77
84
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
85
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
86
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
87
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
78
88
  class ArtifactExtractor {
79
89
  constructor(componentMain, builder, pattern, options) {
80
90
  this.componentMain = componentMain;
81
91
  this.builder = builder;
82
92
  this.pattern = pattern;
83
93
  this.options = options;
94
+ _defineProperty(this, "savedFilesCount", 0);
84
95
  }
85
96
  async list() {
86
97
  const host = this.componentMain.getHost();
87
98
  const ids = await host.idsByPattern(this.pattern);
88
99
  const scope = this.componentMain.getHost(_scope().ScopeAspect.id);
89
- // import in case the components are with build status "pending"
100
+ // re-import the version objects so we pick up any builder data added by the remote build
101
+ // pipeline after the local snap was created (the local Version may have been stored with
102
+ // empty BuilderAspect data — the Version hash excludes extension data, so it isn't replaced
103
+ // on a normal cached import). passing the current lane routes the fetch to the lane's scope
104
+ // where snaps actually live, and the lane-aware fetcher writes back any updated Version.
105
+ const currentLane = await scope.legacyScope.getCurrentLaneObject();
90
106
  await scope.legacyScope.scopeImporter.importWithoutDeps(_componentId().ComponentIdList.fromArray(ids), {
91
- reason: 'artifact'
107
+ lane: currentLane,
108
+ reason: 'to refresh build artifacts'
92
109
  });
93
110
  const components = await host.getMany(ids);
94
111
  const artifactListPerId = components.map(component => {
@@ -98,7 +115,7 @@ class ArtifactExtractor {
98
115
  };
99
116
  });
100
117
  this.filterByOptions(artifactListPerId);
101
- await this.saveFilesInFileSystemIfAsked(artifactListPerId);
118
+ this.savedFilesCount = await this.saveFilesInFileSystemIfAsked(artifactListPerId);
102
119
  return this.artifactsObjectsToExtractorResults(artifactListPerId);
103
120
  }
104
121
  groupResultsByAspect(extractorResult) {
@@ -116,9 +133,10 @@ class ArtifactExtractor {
116
133
  async saveFilesInFileSystemIfAsked(artifactListPerId) {
117
134
  const outDir = this.options.outDir;
118
135
  if (!outDir) {
119
- return;
136
+ return 0;
120
137
  }
121
138
  const scope = this.componentMain.getHost(_scope().ScopeAspect.id);
139
+ let totalSaved = 0;
122
140
  // @todo: optimize this to first import all missing hashes.
123
141
  await (0, _pMapSeries().default)(artifactListPerId, async ({
124
142
  id,
@@ -130,8 +148,15 @@ class ArtifactExtractor {
130
148
  replacement: '_'
131
149
  });
132
150
  const compPath = _path().default.join(outDir, idAsFilename);
133
- await Promise.all(vinyls.map(vinyl => _fsExtra().default.outputFile(_path().default.join(compPath, vinyl.path), vinyl.contents)));
151
+ await Promise.all(vinyls.map(vinyl => {
152
+ if (!(0, _legacy().isValidPath)(vinyl.path)) {
153
+ throw new Error(`refusing to write artifact "${vinyl.path}" for ${id.toString()}: unsafe path`);
154
+ }
155
+ return _fsExtra().default.outputFile(_path().default.join(compPath, vinyl.path), vinyl.contents);
156
+ }));
157
+ totalSaved += vinyls.length;
134
158
  });
159
+ return totalSaved;
135
160
  }
136
161
  artifactsObjectsToExtractorResults(artifactListPerId) {
137
162
  return artifactListPerId.map(({
@@ -1 +1 @@
1
- {"version":3,"names":["_path","data","_interopRequireDefault","require","_filenamify","_fsExtra","_scope","_componentId","_pMapSeries","_minimatch","_component","_artifactList","_artifact","e","__esModule","default","ArtifactExtractor","constructor","componentMain","builder","pattern","options","list","host","getHost","ids","idsByPattern","scope","ScopeAspect","id","legacyScope","scopeImporter","importWithoutDeps","ComponentIdList","fromArray","reason","components","getMany","artifactListPerId","map","component","artifacts","getArtifacts","filterByOptions","saveFilesInFileSystemIfAsked","artifactsObjectsToExtractorResults","groupResultsByAspect","extractorResult","result","reduce","acc","current","aspectId","push","outDir","pMapSeries","vinyls","getVinylsAndImportIfMissing","idAsFilename","filenamify","toStringWithoutVersion","replacement","compPath","path","join","Promise","all","vinyl","fs","outputFile","contents","results","artifact","artifactName","name","task","taskName","generatedBy","files","refs","ref","relativePath","aspect","filteredArtifacts","forEach","item","filter","minimatch","Artifact","def","ArtifactFiles","isEmpty","ArtifactList","exports"],"sources":["artifact-extractor.ts"],"sourcesContent":["import path from 'path';\nimport filenamify from 'filenamify';\nimport fs from 'fs-extra';\nimport type { ComponentMain } from '@teambit/component';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { ComponentID } from '@teambit/component-id';\nimport { ComponentIdList } from '@teambit/component-id';\nimport pMapSeries from 'p-map-series';\nimport minimatch from 'minimatch';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport type { BuilderMain } from '../builder.main.runtime';\nimport type { ArtifactsOpts } from './artifacts.cmd';\nimport { ArtifactList } from './artifact-list';\nimport { Artifact } from './artifact';\n\nexport type ExtractorResult = {\n id: ComponentID;\n artifacts: ExtractorArtifactResult[];\n};\n\nexport type ExtractorArtifactResult = {\n artifactName: string;\n aspectId: string;\n taskName: string;\n files: string[];\n};\n\nexport type ExtractorResultGrouped = {\n id: ComponentID;\n artifacts: { [aspectId: string]: ExtractorArtifactResult[] };\n};\n\ntype ArtifactListPerId = {\n id: ComponentID;\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class ArtifactExtractor {\n constructor(\n private componentMain: ComponentMain,\n private builder: BuilderMain,\n private pattern: string,\n private options: ArtifactsOpts\n ) {}\n\n async list(): Promise<ExtractorResult[]> {\n const host = this.componentMain.getHost();\n const ids = await host.idsByPattern(this.pattern);\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n // import in case the components are with build status \"pending\"\n await scope.legacyScope.scopeImporter.importWithoutDeps(ComponentIdList.fromArray(ids), { reason: 'artifact' });\n const components = await host.getMany(ids);\n const artifactListPerId: ArtifactListPerId[] = components.map((component) => {\n return {\n id: component.id,\n artifacts: this.builder.getArtifacts(component),\n };\n });\n this.filterByOptions(artifactListPerId);\n await this.saveFilesInFileSystemIfAsked(artifactListPerId);\n\n return this.artifactsObjectsToExtractorResults(artifactListPerId);\n }\n\n groupResultsByAspect(extractorResult: ExtractorResult[]) {\n return extractorResult.map((result) => {\n const artifacts = result.artifacts.reduce((acc, current) => {\n (acc[current.aspectId] ||= []).push(current);\n return acc;\n }, {});\n return { id: result.id, artifacts };\n });\n }\n\n private async saveFilesInFileSystemIfAsked(artifactListPerId: ArtifactListPerId[]) {\n const outDir = this.options.outDir;\n if (!outDir) {\n return;\n }\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n // @todo: optimize this to first import all missing hashes.\n await pMapSeries(artifactListPerId, async ({ id, artifacts }) => {\n const vinyls = await artifacts.getVinylsAndImportIfMissing(id, scope.legacyScope);\n // make sure the component-dir is just one dir. without this, every slash in the component-id will create a new dir.\n const idAsFilename = filenamify(id.toStringWithoutVersion(), { replacement: '_' });\n const compPath = path.join(outDir, idAsFilename);\n await Promise.all(vinyls.map((vinyl) => fs.outputFile(path.join(compPath, vinyl.path), vinyl.contents)));\n });\n }\n\n private artifactsObjectsToExtractorResults(artifactListPerId: ArtifactListPerId[]): ExtractorResult[] {\n return artifactListPerId.map(({ id, artifacts }) => {\n const results: ExtractorArtifactResult[] = artifacts.map((artifact) => {\n return {\n artifactName: artifact.name,\n aspectId: artifact.task.aspectId,\n taskName: artifact.task.name || artifact.generatedBy,\n files: artifact.files.refs.map((ref) => ref.relativePath),\n };\n });\n return {\n id,\n artifacts: results,\n };\n });\n }\n\n private filterByOptions(artifactListPerId: ArtifactListPerId[]) {\n const { aspect, task, files } = this.options;\n let filteredArtifacts: Artifact[] = [];\n\n artifactListPerId.forEach((item) => {\n filteredArtifacts = item.artifacts.filter((artifact) => {\n if (aspect && aspect !== artifact.task.aspectId) return false;\n if (task && task !== artifact.task.name) return false;\n return true;\n });\n if (files) {\n filteredArtifacts = item.artifacts\n .map((artifact) => {\n const refs = artifact.files.refs.filter((ref) => minimatch(ref.relativePath, files));\n return new Artifact(artifact.def, new ArtifactFiles([], [], refs), artifact.task);\n })\n // remove artifacts with no files\n .filter((artifact) => !artifact.isEmpty());\n }\n item.artifacts = ArtifactList.fromArray(filteredArtifacts);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_path","data","_interopRequireDefault","require","_filenamify","_fsExtra","_scope","_componentId","_pMapSeries","_minimatch","_component","_legacy","_artifactList","_artifact","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ArtifactExtractor","constructor","componentMain","builder","pattern","options","list","host","getHost","ids","idsByPattern","scope","ScopeAspect","id","currentLane","legacyScope","getCurrentLaneObject","scopeImporter","importWithoutDeps","ComponentIdList","fromArray","lane","reason","components","getMany","artifactListPerId","map","component","artifacts","getArtifacts","filterByOptions","savedFilesCount","saveFilesInFileSystemIfAsked","artifactsObjectsToExtractorResults","groupResultsByAspect","extractorResult","result","reduce","acc","current","aspectId","push","outDir","totalSaved","pMapSeries","vinyls","getVinylsAndImportIfMissing","idAsFilename","filenamify","toStringWithoutVersion","replacement","compPath","path","join","Promise","all","vinyl","isValidPath","Error","toString","fs","outputFile","contents","length","results","artifact","artifactName","name","task","taskName","generatedBy","files","refs","ref","relativePath","aspect","filteredArtifacts","forEach","item","filter","minimatch","Artifact","def","ArtifactFiles","isEmpty","ArtifactList","exports"],"sources":["artifact-extractor.ts"],"sourcesContent":["import path from 'path';\nimport filenamify from 'filenamify';\nimport fs from 'fs-extra';\nimport type { ComponentMain } from '@teambit/component';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { ComponentID } from '@teambit/component-id';\nimport { ComponentIdList } from '@teambit/component-id';\nimport pMapSeries from 'p-map-series';\nimport minimatch from 'minimatch';\nimport { ArtifactFiles } from '@teambit/component.sources';\nimport { isValidPath } from '@teambit/legacy.utils';\nimport type { BuilderMain } from '../builder.main.runtime';\nimport type { ArtifactsOpts } from './artifacts.cmd';\nimport { ArtifactList } from './artifact-list';\nimport { Artifact } from './artifact';\n\nexport type ExtractorResult = {\n id: ComponentID;\n artifacts: ExtractorArtifactResult[];\n};\n\nexport type ExtractorArtifactResult = {\n artifactName: string;\n aspectId: string;\n taskName: string;\n files: string[];\n};\n\nexport type ExtractorResultGrouped = {\n id: ComponentID;\n artifacts: { [aspectId: string]: ExtractorArtifactResult[] };\n};\n\ntype ArtifactListPerId = {\n id: ComponentID;\n artifacts: ArtifactList<Artifact>;\n};\n\nexport class ArtifactExtractor {\n savedFilesCount = 0;\n\n constructor(\n private componentMain: ComponentMain,\n private builder: BuilderMain,\n private pattern: string,\n private options: ArtifactsOpts\n ) {}\n\n async list(): Promise<ExtractorResult[]> {\n const host = this.componentMain.getHost();\n const ids = await host.idsByPattern(this.pattern);\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n // re-import the version objects so we pick up any builder data added by the remote build\n // pipeline after the local snap was created (the local Version may have been stored with\n // empty BuilderAspect data — the Version hash excludes extension data, so it isn't replaced\n // on a normal cached import). passing the current lane routes the fetch to the lane's scope\n // where snaps actually live, and the lane-aware fetcher writes back any updated Version.\n const currentLane = await scope.legacyScope.getCurrentLaneObject();\n await scope.legacyScope.scopeImporter.importWithoutDeps(ComponentIdList.fromArray(ids), {\n lane: currentLane,\n reason: 'to refresh build artifacts',\n });\n const components = await host.getMany(ids);\n const artifactListPerId: ArtifactListPerId[] = components.map((component) => {\n return {\n id: component.id,\n artifacts: this.builder.getArtifacts(component),\n };\n });\n this.filterByOptions(artifactListPerId);\n this.savedFilesCount = await this.saveFilesInFileSystemIfAsked(artifactListPerId);\n\n return this.artifactsObjectsToExtractorResults(artifactListPerId);\n }\n\n groupResultsByAspect(extractorResult: ExtractorResult[]) {\n return extractorResult.map((result) => {\n const artifacts = result.artifacts.reduce((acc, current) => {\n (acc[current.aspectId] ||= []).push(current);\n return acc;\n }, {});\n return { id: result.id, artifacts };\n });\n }\n\n private async saveFilesInFileSystemIfAsked(artifactListPerId: ArtifactListPerId[]): Promise<number> {\n const outDir = this.options.outDir;\n if (!outDir) {\n return 0;\n }\n const scope = this.componentMain.getHost(ScopeAspect.id) as ScopeMain;\n let totalSaved = 0;\n // @todo: optimize this to first import all missing hashes.\n await pMapSeries(artifactListPerId, async ({ id, artifacts }) => {\n const vinyls = await artifacts.getVinylsAndImportIfMissing(id, scope.legacyScope);\n // make sure the component-dir is just one dir. without this, every slash in the component-id will create a new dir.\n const idAsFilename = filenamify(id.toStringWithoutVersion(), { replacement: '_' });\n const compPath = path.join(outDir, idAsFilename);\n await Promise.all(\n vinyls.map((vinyl) => {\n if (!isValidPath(vinyl.path)) {\n throw new Error(`refusing to write artifact \"${vinyl.path}\" for ${id.toString()}: unsafe path`);\n }\n return fs.outputFile(path.join(compPath, vinyl.path), vinyl.contents);\n })\n );\n totalSaved += vinyls.length;\n });\n return totalSaved;\n }\n\n private artifactsObjectsToExtractorResults(artifactListPerId: ArtifactListPerId[]): ExtractorResult[] {\n return artifactListPerId.map(({ id, artifacts }) => {\n const results: ExtractorArtifactResult[] = artifacts.map((artifact) => {\n return {\n artifactName: artifact.name,\n aspectId: artifact.task.aspectId,\n taskName: artifact.task.name || artifact.generatedBy,\n files: artifact.files.refs.map((ref) => ref.relativePath),\n };\n });\n return {\n id,\n artifacts: results,\n };\n });\n }\n\n private filterByOptions(artifactListPerId: ArtifactListPerId[]) {\n const { aspect, task, files } = this.options;\n let filteredArtifacts: Artifact[] = [];\n\n artifactListPerId.forEach((item) => {\n filteredArtifacts = item.artifacts.filter((artifact) => {\n if (aspect && aspect !== artifact.task.aspectId) return false;\n if (task && task !== artifact.task.name) return false;\n return true;\n });\n if (files) {\n filteredArtifacts = item.artifacts\n .map((artifact) => {\n const refs = artifact.files.refs.filter((ref) => minimatch(ref.relativePath, files));\n return new Artifact(artifact.def, new ArtifactFiles([], [], refs), artifact.task);\n })\n // remove artifacts with no files\n .filter((artifact) => !artifact.isEmpty());\n }\n item.artifacts = ArtifactList.fromArray(filteredArtifacts);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -60,6 +60,10 @@ use --out-dir to download artifacts locally for inspection or deployment purpose
60
60
  async report([componentPattern], artifactsOpts) {
61
61
  const artifactExtractor = new (_artifactExtractor().ArtifactExtractor)(this.componentMain, this.builder, componentPattern, artifactsOpts);
62
62
  const list = await artifactExtractor.list();
63
+ const totalArtifacts = list.reduce((sum, r) => sum + r.artifacts.length, 0);
64
+ if (totalArtifacts === 0) {
65
+ return (0, _cli().formatWarningSummary)(`no artifacts found for "${componentPattern}"`);
66
+ }
63
67
  const grouped = artifactExtractor.groupResultsByAspect(list);
64
68
  const outputArtifacts = (aspectId, artifactData) => {
65
69
  const title = (0, _cli().formatTitle)(aspectId);
@@ -75,7 +79,7 @@ use --out-dir to download artifacts locally for inspection or deployment purpose
75
79
  const artifacts = Object.keys(result.artifacts).map(aspectId => outputArtifacts(aspectId, result.artifacts[aspectId])).join('\n\n');
76
80
  return `${idStr}\n${artifacts}`;
77
81
  };
78
- const footer = artifactsOpts.outDir ? `\n\n${(0, _cli().formatSuccessSummary)('The above files were saved to the file system')}` : '';
82
+ const footer = artifactsOpts.outDir ? `\n\n${(0, _cli().formatSuccessSummary)(`${artifactExtractor.savedFilesCount} file(s) saved to "${artifactsOpts.outDir}"`)}` : '';
79
83
  return grouped.map(outputResult).join('\n\n') + footer;
80
84
  }
81
85
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_chalk","_interopRequireDefault","_legacy","_artifactExtractor","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","INDENT_TITLE","repeat","INDENT_SUB_TITLE","INDENT_FILES","ArtifactsCmd","constructor","builder","componentMain","name","description","COMPONENT_PATTERN_HELP","report","componentPattern","artifactsOpts","artifactExtractor","ArtifactExtractor","list","grouped","groupResultsByAspect","outputArtifacts","aspectId","artifactData","title","formatTitle","artifactDataStr","map","artifact","subTitle","chalk","white","taskName","artifactName","files","f","dim","join","outputResult","result","idStr","cyan","id","toString","artifacts","keys","footer","outDir","formatSuccessSummary","exports"],"sources":["artifacts.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport { formatTitle, formatSuccessSummary } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { ComponentMain } from '@teambit/component';\nimport type { BuilderMain } from '../builder.main.runtime';\nimport type { ExtractorArtifactResult, ExtractorResultGrouped } from './artifact-extractor';\nimport { ArtifactExtractor } from './artifact-extractor';\n\nconst INDENT_TITLE = ' '.repeat(2);\nconst INDENT_SUB_TITLE = ' '.repeat(4);\nconst INDENT_FILES = ' '.repeat(6);\n\nexport type ArtifactsOpts = {\n aspect?: string;\n task?: string;\n files?: string;\n outDir?: string;\n};\n\nexport class ArtifactsCmd implements Command {\n name = 'artifacts <component-pattern>';\n description = 'view and download build artifacts';\n extendedDescription = `displays artifacts created during the build pipeline in isolated capsules during tag or snap operations.\nartifacts include compiled files, test reports, package files, and other build outputs generated by various tasks.\nuse --out-dir to download artifacts locally for inspection or deployment purposes.`;\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n alias = '';\n group = 'testing';\n helpUrl = 'reference/components/component-artifacts';\n options = [\n ['', 'aspect <aspect-id>', 'show/download only artifacts generated by this aspect-id'],\n ['', 'task <task-id>', 'show/download only artifacts generated by this task-id'],\n [\n '',\n 'files <glob>',\n 'show/download only artifacts matching the given files or the glob pattern (wrap glob patterns in quotes)',\n ],\n ['', 'out-dir <string>', 'download the files to the specified dir'],\n ] as CommandOptions;\n\n constructor(\n private builder: BuilderMain,\n private componentMain: ComponentMain\n ) {}\n\n async report([componentPattern]: [string], artifactsOpts: ArtifactsOpts): Promise<string> {\n const artifactExtractor = new ArtifactExtractor(this.componentMain, this.builder, componentPattern, artifactsOpts);\n const list = await artifactExtractor.list();\n const grouped = artifactExtractor.groupResultsByAspect(list);\n const outputArtifacts = (aspectId: string, artifactData: ExtractorArtifactResult[]) => {\n const title = formatTitle(aspectId);\n const artifactDataStr = artifactData\n .map((artifact) => {\n const subTitle = chalk.white(`${artifact.taskName} (${artifact.artifactName})`);\n const files = artifact.files.map((f) => INDENT_FILES + chalk.dim(f)).join('\\n');\n return `${INDENT_SUB_TITLE}${subTitle}\\n${files}`;\n })\n .join('\\n');\n return `${INDENT_TITLE}${title}\\n${artifactDataStr}`;\n };\n const outputResult = (result: ExtractorResultGrouped) => {\n const idStr = chalk.cyan(result.id.toString());\n const artifacts = Object.keys(result.artifacts)\n .map((aspectId) => outputArtifacts(aspectId, result.artifacts[aspectId]))\n .join('\\n\\n');\n return `${idStr}\\n${artifacts}`;\n };\n const footer = artifactsOpts.outDir\n ? `\\n\\n${formatSuccessSummary('The above files were saved to the file system')}`\n : '';\n return grouped.map(outputResult).join('\\n\\n') + footer;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_chalk","_interopRequireDefault","_legacy","_artifactExtractor","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","INDENT_TITLE","repeat","INDENT_SUB_TITLE","INDENT_FILES","ArtifactsCmd","constructor","builder","componentMain","name","description","COMPONENT_PATTERN_HELP","report","componentPattern","artifactsOpts","artifactExtractor","ArtifactExtractor","list","totalArtifacts","reduce","sum","artifacts","length","formatWarningSummary","grouped","groupResultsByAspect","outputArtifacts","aspectId","artifactData","title","formatTitle","artifactDataStr","map","artifact","subTitle","chalk","white","taskName","artifactName","files","f","dim","join","outputResult","result","idStr","cyan","id","toString","keys","footer","outDir","formatSuccessSummary","savedFilesCount","exports"],"sources":["artifacts.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport { formatTitle, formatSuccessSummary, formatWarningSummary } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { ComponentMain } from '@teambit/component';\nimport type { BuilderMain } from '../builder.main.runtime';\nimport type { ExtractorArtifactResult, ExtractorResultGrouped } from './artifact-extractor';\nimport { ArtifactExtractor } from './artifact-extractor';\n\nconst INDENT_TITLE = ' '.repeat(2);\nconst INDENT_SUB_TITLE = ' '.repeat(4);\nconst INDENT_FILES = ' '.repeat(6);\n\nexport type ArtifactsOpts = {\n aspect?: string;\n task?: string;\n files?: string;\n outDir?: string;\n};\n\nexport class ArtifactsCmd implements Command {\n name = 'artifacts <component-pattern>';\n description = 'view and download build artifacts';\n extendedDescription = `displays artifacts created during the build pipeline in isolated capsules during tag or snap operations.\nartifacts include compiled files, test reports, package files, and other build outputs generated by various tasks.\nuse --out-dir to download artifacts locally for inspection or deployment purposes.`;\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n alias = '';\n group = 'testing';\n helpUrl = 'reference/components/component-artifacts';\n options = [\n ['', 'aspect <aspect-id>', 'show/download only artifacts generated by this aspect-id'],\n ['', 'task <task-id>', 'show/download only artifacts generated by this task-id'],\n [\n '',\n 'files <glob>',\n 'show/download only artifacts matching the given files or the glob pattern (wrap glob patterns in quotes)',\n ],\n ['', 'out-dir <string>', 'download the files to the specified dir'],\n ] as CommandOptions;\n\n constructor(\n private builder: BuilderMain,\n private componentMain: ComponentMain\n ) {}\n\n async report([componentPattern]: [string], artifactsOpts: ArtifactsOpts): Promise<string> {\n const artifactExtractor = new ArtifactExtractor(this.componentMain, this.builder, componentPattern, artifactsOpts);\n const list = await artifactExtractor.list();\n const totalArtifacts = list.reduce((sum, r) => sum + r.artifacts.length, 0);\n if (totalArtifacts === 0) {\n return formatWarningSummary(`no artifacts found for \"${componentPattern}\"`);\n }\n const grouped = artifactExtractor.groupResultsByAspect(list);\n const outputArtifacts = (aspectId: string, artifactData: ExtractorArtifactResult[]) => {\n const title = formatTitle(aspectId);\n const artifactDataStr = artifactData\n .map((artifact) => {\n const subTitle = chalk.white(`${artifact.taskName} (${artifact.artifactName})`);\n const files = artifact.files.map((f) => INDENT_FILES + chalk.dim(f)).join('\\n');\n return `${INDENT_SUB_TITLE}${subTitle}\\n${files}`;\n })\n .join('\\n');\n return `${INDENT_TITLE}${title}\\n${artifactDataStr}`;\n };\n const outputResult = (result: ExtractorResultGrouped) => {\n const idStr = chalk.cyan(result.id.toString());\n const artifacts = Object.keys(result.artifacts)\n .map((aspectId) => outputArtifacts(aspectId, result.artifacts[aspectId]))\n .join('\\n\\n');\n return `${idStr}\\n${artifacts}`;\n };\n const footer = artifactsOpts.outDir\n ? `\\n\\n${formatSuccessSummary(`${artifactExtractor.savedFilesCount} file(s) saved to \"${artifactsOpts.outDir}\"`)}`\n : '';\n return grouped.map(outputResult).join('\\n\\n') + footer;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.978/dist/builder.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.978/dist/builder.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.980/dist/builder.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.pipelines_builder@1.0.980/dist/builder.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/builder",
3
- "version": "1.0.978",
3
+ "version": "1.0.980",
4
4
  "homepage": "https://bit.cloud/teambit/pipelines/builder",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.pipelines",
8
8
  "name": "builder",
9
- "version": "1.0.978"
9
+ "version": "1.0.980"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -40,16 +40,16 @@
40
40
  "@teambit/component-id": "1.2.4",
41
41
  "@teambit/legacy.utils": "0.0.35",
42
42
  "@teambit/legacy.scope": "0.0.112",
43
- "@teambit/component": "1.0.978",
44
- "@teambit/envs": "1.0.978",
45
- "@teambit/isolator": "1.0.978",
46
- "@teambit/workspace": "1.0.978",
47
- "@teambit/aspect-loader": "1.0.978",
48
- "@teambit/generator": "1.0.979",
49
- "@teambit/graphql": "1.0.978",
50
- "@teambit/issues": "1.0.978",
51
- "@teambit/scope": "1.0.978",
52
- "@teambit/ui": "1.0.978"
43
+ "@teambit/component": "1.0.980",
44
+ "@teambit/envs": "1.0.980",
45
+ "@teambit/isolator": "1.0.980",
46
+ "@teambit/workspace": "1.0.980",
47
+ "@teambit/aspect-loader": "1.0.980",
48
+ "@teambit/generator": "1.0.981",
49
+ "@teambit/graphql": "1.0.980",
50
+ "@teambit/issues": "1.0.980",
51
+ "@teambit/scope": "1.0.980",
52
+ "@teambit/ui": "1.0.980"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/pretty-time": "^1.1.5",