@backstage/repo-tools 0.7.0 → 0.7.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @backstage/repo-tools
2
2
 
3
+ ## 0.7.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @backstage/backend-common@0.21.6
9
+ - @backstage/catalog-model@1.4.5
10
+ - @backstage/cli-common@0.1.13
11
+ - @backstage/cli-node@0.2.4
12
+ - @backstage/errors@1.2.4
13
+
14
+ ## 0.7.1
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies
19
+ - @backstage/backend-common@0.21.5
20
+ - @backstage/catalog-model@1.4.5
21
+ - @backstage/cli-common@0.1.13
22
+ - @backstage/cli-node@0.2.4
23
+ - @backstage/errors@1.2.4
24
+
3
25
  ## 0.7.0
4
26
 
5
27
  ### Minor Changes
@@ -12,19 +12,19 @@ var DocTable = require('@microsoft/api-documenter/lib/nodes/DocTable');
12
12
  var DocTableRow = require('@microsoft/api-documenter/lib/nodes/DocTableRow');
13
13
  var DocHeading = require('@microsoft/api-documenter/lib/nodes/DocHeading');
14
14
  var CustomMarkdownEmitter = require('@microsoft/api-documenter/lib/markdown/CustomMarkdownEmitter');
15
- var paths = require('./paths-9ab9b8a8.cjs.js');
15
+ var paths = require('./paths-BvbxdT_S.cjs.js');
16
16
  var minimatch = require('minimatch');
17
- var entryPoints = require('./entryPoints-c9b88245.cjs.js');
18
- var util = require('./util-bfc74a41.cjs.js');
17
+ var entryPoints = require('./entryPoints-BYUBMQoL.cjs.js');
18
+ var util = require('./util-BhlP_S3V.cjs.js');
19
19
  var child_process = require('child_process');
20
20
  require('@backstage/cli-common');
21
21
  require('@backstage/cli-node');
22
22
  require('os');
23
23
  require('p-limit');
24
24
 
25
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
25
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
26
26
 
27
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
27
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
28
28
 
29
29
  var __defProp = Object.defineProperty;
30
30
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -147,7 +147,7 @@ ApiReportGenerator.generateReviewFileContent = function decoratedGenerateReviewF
147
147
  async function createTemporaryTsConfig(includedPackageDirs) {
148
148
  const path$1 = paths.paths.resolveTargetRoot("tsconfig.tmp.json");
149
149
  process.once("exit", () => {
150
- fs__default["default"].removeSync(path$1);
150
+ fs__default.default.removeSync(path$1);
151
151
  });
152
152
  let assetTypeFile = [];
153
153
  try {
@@ -156,7 +156,7 @@ async function createTemporaryTsConfig(includedPackageDirs) {
156
156
  ];
157
157
  } catch {
158
158
  }
159
- await fs__default["default"].writeJson(path$1, {
159
+ await fs__default.default.writeJson(path$1, {
160
160
  extends: "./tsconfig.json",
161
161
  include: [
162
162
  // These two contain global definitions that are needed for stable API report generation
@@ -170,7 +170,7 @@ async function createTemporaryTsConfig(includedPackageDirs) {
170
170
  }
171
171
  async function countApiReportWarnings(reportPath) {
172
172
  try {
173
- const content = await fs__default["default"].readFile(reportPath, "utf8");
173
+ const content = await fs__default.default.readFile(reportPath, "utf8");
174
174
  const lines = content.split("\n");
175
175
  const lineWarnings = lines.filter(
176
176
  (line) => line.includes("// Warning:")
@@ -223,7 +223,7 @@ async function findPackageEntryPoints(packageDirs) {
223
223
  return Promise.all(
224
224
  packageDirs.map(async (packageDir) => {
225
225
  var _a, _b;
226
- const pkg = await fs__default["default"].readJson(
226
+ const pkg = await fs__default.default.readJson(
227
227
  paths.paths.resolveTargetRoot(packageDir, "package.json")
228
228
  );
229
229
  return (_b = (_a = entryPoints.getPackageExportNames(pkg)) == null ? void 0 : _a.map((name) => ({ packageDir, name }))) != null ? _b : {
@@ -242,7 +242,7 @@ async function runApiExtraction({
242
242
  omitMessages = [],
243
243
  validateReleaseTags = false
244
244
  }) {
245
- await fs__default["default"].remove(outputDir);
245
+ await fs__default.default.remove(outputDir);
246
246
  const packageEntryPoints = await findPackageEntryPoints(packageDirs);
247
247
  const entryPoints = packageEntryPoints.map(({ packageDir, name }) => {
248
248
  return paths.paths.resolveTargetRoot(
@@ -270,7 +270,7 @@ async function runApiExtraction({
270
270
  );
271
271
  const names = group.map((ep) => ep.name);
272
272
  const remainingReportFiles = new Set(
273
- fs__default["default"].readdirSync(projectFolder).filter(
273
+ fs__default.default.readdirSync(projectFolder).filter(
274
274
  (filename) => filename.match(/^(.+)-api-report\.md$/) || filename.match(/^api-report(-.+)?\.md$/)
275
275
  )
276
276
  );
@@ -377,9 +377,9 @@ async function runApiExtraction({
377
377
  },
378
378
  compilerState
379
379
  });
380
- if (validateReleaseTags && fs__default["default"].pathExistsSync(extractorConfig.reportFilePath)) {
380
+ if (validateReleaseTags && fs__default.default.pathExistsSync(extractorConfig.reportFilePath)) {
381
381
  if (["index", "alpha", "beta"].includes(name)) {
382
- const report = await fs__default["default"].readFile(
382
+ const report = await fs__default.default.readFile(
383
383
  extractorConfig.reportFilePath,
384
384
  "utf8"
385
385
  );
@@ -411,7 +411,7 @@ async function runApiExtraction({
411
411
  )}, with the following content:`
412
412
  );
413
413
  console.log("");
414
- const content = await fs__default["default"].readFile(conflictingFile, "utf8");
414
+ const content = await fs__default.default.readFile(conflictingFile, "utf8");
415
415
  console.log(content);
416
416
  logApiReportInstructions();
417
417
  }
@@ -443,7 +443,7 @@ async function runApiExtraction({
443
443
  if (remainingReportFiles.size > 0) {
444
444
  if (isLocalBuild) {
445
445
  for (const f of remainingReportFiles) {
446
- fs__default["default"].rmSync(path.resolve(projectFolder, f));
446
+ fs__default.default.rmSync(path.resolve(projectFolder, f));
447
447
  console.log(`Deleted deprecated API report ${f}`);
448
448
  }
449
449
  } else {
@@ -640,9 +640,9 @@ async function buildDocs({
640
640
  }) {
641
641
  const parseFile = async (filename) => {
642
642
  console.log(`Reading ${filename}`);
643
- return fs__default["default"].readJson(path.resolve(inputDir, filename));
643
+ return fs__default.default.readJson(path.resolve(inputDir, filename));
644
644
  };
645
- const filenames = await fs__default["default"].readdir(inputDir);
645
+ const filenames = await fs__default.default.readdir(inputDir);
646
646
  const serializedPackages = await Promise.all(
647
647
  filenames.filter((filename) => filename.match(/\.api\.json$/i)).map(parseFile)
648
648
  );
@@ -887,8 +887,8 @@ async function buildDocs({
887
887
  },
888
888
  outputFolder: outputDir
889
889
  });
890
- await fs__default["default"].remove(outputDir);
891
- await fs__default["default"].ensureDir(outputDir);
890
+ await fs__default.default.remove(outputDir);
891
+ await fs__default.default.ensureDir(outputDir);
892
892
  documenter.generateFiles();
893
893
  }
894
894
  async function categorizePackageDirs(packageDirs) {
@@ -903,7 +903,7 @@ async function categorizePackageDirs(packageDirs) {
903
903
  if (!dir) {
904
904
  return;
905
905
  }
906
- const pkgJson = await fs__default["default"].readJson(paths.paths.resolveTargetRoot(dir, "package.json")).catch((error) => {
906
+ const pkgJson = await fs__default.default.readJson(paths.paths.resolveTargetRoot(dir, "package.json")).catch((error) => {
907
907
  if (error.code === "ENOENT") {
908
908
  return void 0;
909
909
  }
@@ -1016,7 +1016,7 @@ async function runCliExtraction({
1016
1016
  for (const packageDir of packageDirs) {
1017
1017
  console.log(`## Processing ${packageDir}`);
1018
1018
  const fullDir = paths.paths.resolveTargetRoot(packageDir);
1019
- const pkgJson = await fs__default["default"].readJson(path.resolve(fullDir, "package.json"));
1019
+ const pkgJson = await fs__default.default.readJson(path.resolve(fullDir, "package.json"));
1020
1020
  if (!pkgJson.bin) {
1021
1021
  throw new Error(`CLI Package in ${packageDir} has no bin field`);
1022
1022
  }
@@ -1034,7 +1034,7 @@ async function runCliExtraction({
1034
1034
  }
1035
1035
  const report = generateCliReport(pkgJson.name, models);
1036
1036
  const reportPath = path.resolve(fullDir, "cli-report.md");
1037
- const existingReport = await fs__default["default"].readFile(reportPath, "utf8").catch((error) => {
1037
+ const existingReport = await fs__default.default.readFile(reportPath, "utf8").catch((error) => {
1038
1038
  if (error.code === "ENOENT") {
1039
1039
  return void 0;
1040
1040
  }
@@ -1043,7 +1043,7 @@ async function runCliExtraction({
1043
1043
  if (existingReport !== report) {
1044
1044
  if (isLocalBuild) {
1045
1045
  console.warn(`CLI report changed for ${packageDir}`);
1046
- await fs__default["default"].writeFile(reportPath, report);
1046
+ await fs__default.default.writeFile(reportPath, report);
1047
1047
  } else {
1048
1048
  logApiReportInstructions();
1049
1049
  if (existingReport) {
@@ -1065,7 +1065,7 @@ async function runCliExtraction({
1065
1065
  }
1066
1066
 
1067
1067
  async function generateTypeDeclarations(tsconfigFilePath) {
1068
- await fs__default["default"].remove(paths.paths.resolveTargetRoot("dist-types"));
1068
+ await fs__default.default.remove(paths.paths.resolveTargetRoot("dist-types"));
1069
1069
  const { status } = child_process.spawnSync(
1070
1070
  "yarn",
1071
1071
  [
@@ -1156,4 +1156,4 @@ function parseArrayOption(value) {
1156
1156
  }
1157
1157
 
1158
1158
  exports.buildApiReports = buildApiReports;
1159
- //# sourceMappingURL=api-reports-6fbf90c8.cjs.js.map
1159
+ //# sourceMappingURL=api-reports-BILnGZ_-.cjs.js.map
@@ -23,4 +23,4 @@ function getPackageExportNames(pkg) {
23
23
  }
24
24
 
25
25
  exports.getPackageExportNames = getPackageExportNames;
26
- //# sourceMappingURL=entryPoints-c9b88245.cjs.js.map
26
+ //# sourceMappingURL=entryPoints-BYUBMQoL.cjs.js.map
@@ -15,4 +15,4 @@ const exec = (command, options = [], execOptions) => {
15
15
  };
16
16
 
17
17
  exports.exec = exec;
18
- //# sourceMappingURL=exec-7bf444eb.cjs.js.map
18
+ //# sourceMappingURL=exec-d7-AweRf.cjs.js.map
@@ -10,15 +10,15 @@ var codeownersUtils = require('codeowners-utils');
10
10
  var fs = require('fs');
11
11
  var util = require('util');
12
12
 
13
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
14
14
 
15
- var YAML__default = /*#__PURE__*/_interopDefaultLegacy(YAML);
16
- var pLimit__default = /*#__PURE__*/_interopDefaultLegacy(pLimit);
17
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
18
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
15
+ var YAML__default = /*#__PURE__*/_interopDefaultCompat(YAML);
16
+ var pLimit__default = /*#__PURE__*/_interopDefaultCompat(pLimit);
17
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
18
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
19
19
 
20
- const readFile = util.promisify(fs__default["default"].readFile);
21
- const writeFile = util.promisify(fs__default["default"].writeFile);
20
+ const readFile = util.promisify(fs__default.default.readFile);
21
+ const writeFile = util.promisify(fs__default.default.writeFile);
22
22
  function isBackstagePackage(packageJson) {
23
23
  var _a;
24
24
  return packageJson && packageJson.hasOwnProperty("backstage") && ((_a = packageJson == null ? void 0 : packageJson.backstage) == null ? void 0 : _a.role) !== "undefined";
@@ -68,7 +68,7 @@ var generateCatalogInfo = async (opts) => {
68
68
  const { dryRun = false, ci = false } = opts;
69
69
  const packages = await cliNode.PackageGraph.listTargetPackages();
70
70
  const codeowners = await loadCodeowners();
71
- const limit = pLimit__default["default"](10);
71
+ const limit = pLimit__default.default(10);
72
72
  const isDryRun = ci ? true : dryRun;
73
73
  const checkForChanges = ci;
74
74
  const results = await Promise.allSettled(
@@ -106,7 +106,7 @@ var generateCatalogInfo = async (opts) => {
106
106
  const rejects = results.filter(isRejected);
107
107
  if (rejects.length > 0) {
108
108
  console.error(
109
- chalk__default["default"].red("Unable to create or fix catalog-info.yaml files\n")
109
+ chalk__default.default.red("Unable to create or fix catalog-info.yaml files\n")
110
110
  );
111
111
  rejects.forEach((reject) => console.error(` ${reject.reason}`));
112
112
  console.error();
@@ -134,7 +134,7 @@ async function createCatalogInfoYaml(options) {
134
134
  if (dryRun) {
135
135
  console.error(instruction);
136
136
  } else {
137
- await writeFile(yamlPath, YAML__default["default"].dump(entity));
137
+ await writeFile(yamlPath, YAML__default.default.dump(entity));
138
138
  }
139
139
  return instruction;
140
140
  }
@@ -148,7 +148,7 @@ async function fixCatalogInfoYaml(options) {
148
148
  const safeName = safeEntityName(packageJson.name);
149
149
  let yamlJson;
150
150
  try {
151
- yamlJson = YAML__default["default"].load(yamlString);
151
+ yamlJson = YAML__default.default.load(yamlString);
152
152
  } catch (e) {
153
153
  throw new Error(`Unable to parse ${path.relative(".", yamlPath)}: ${e}`);
154
154
  }
@@ -216,5 +216,5 @@ function createOrMergeEntity(packageJson, owner, existingEntity = {}) {
216
216
  };
217
217
  }
218
218
 
219
- exports["default"] = generateCatalogInfo;
220
- //# sourceMappingURL=generate-catalog-info-e7071c1c.cjs.js.map
219
+ exports.default = generateCatalogInfo;
220
+ //# sourceMappingURL=generate-catalog-info-CwsIGc45.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var paths = require('./paths-9ab9b8a8.cjs.js');
4
+ var paths = require('./paths-BvbxdT_S.cjs.js');
5
5
  var path = require('path');
6
6
 
7
7
  const YAML_SCHEMA_PATH = "src/schema/openapi.yaml";
@@ -67,4 +67,4 @@ exports.YAML_SCHEMA_PATH = YAML_SCHEMA_PATH;
67
67
  exports.getPathToCurrentOpenApiSpec = getPathToCurrentOpenApiSpec;
68
68
  exports.getPathToOpenApiSpec = getPathToOpenApiSpec;
69
69
  exports.getRelativePathToFile = getRelativePathToFile;
70
- //# sourceMappingURL=helpers-712dfada.cjs.js.map
70
+ //# sourceMappingURL=helpers-Dd7PBM8s.cjs.js.map
@@ -2,10 +2,10 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var path = require('path');
5
- var helpers = require('./helpers-712dfada.cjs.js');
6
- var paths = require('./paths-9ab9b8a8.cjs.js');
5
+ var helpers = require('./helpers-Dd7PBM8s.cjs.js');
6
+ var paths = require('./paths-BvbxdT_S.cjs.js');
7
7
  var fs = require('fs-extra');
8
- var exec$1 = require('./exec-7bf444eb.cjs.js');
8
+ var exec$1 = require('./exec-d7-AweRf.cjs.js');
9
9
  var backendCommon = require('@backstage/backend-common');
10
10
  var YAML = require('js-yaml');
11
11
  var util = require('util');
@@ -14,11 +14,11 @@ require('@backstage/cli-common');
14
14
  require('@backstage/cli-node');
15
15
  require('minimatch');
16
16
 
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
18
18
 
19
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
20
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
21
- var YAML__default = /*#__PURE__*/_interopDefaultLegacy(YAML);
19
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
20
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
21
+ var YAML__default = /*#__PURE__*/_interopDefaultCompat(YAML);
22
22
 
23
23
  async function generate$1(outputDirectory) {
24
24
  const resolvedOpenapiPath = await helpers.getPathToCurrentOpenApiSpec();
@@ -27,8 +27,8 @@ async function generate$1(outputDirectory) {
27
27
  helpers.OUTPUT_PATH
28
28
  );
29
29
  fs.mkdirpSync(resolvedOutputDirectory);
30
- await fs__default["default"].mkdirp(resolvedOutputDirectory);
31
- await fs__default["default"].writeFile(
30
+ await fs__default.default.mkdirp(resolvedOutputDirectory);
31
+ await fs__default.default.writeFile(
32
32
  path.resolve(resolvedOutputDirectory, ".openapi-generator-ignore"),
33
33
  helpers.OPENAPI_IGNORE_FILES.join("\n")
34
34
  );
@@ -66,8 +66,8 @@ async function generate$1(outputDirectory) {
66
66
  if (prettier) {
67
67
  await exec$1.exec(`${prettier} --write ${resolvedOutputDirectory}`);
68
68
  }
69
- fs__default["default"].removeSync(path.resolve(resolvedOutputDirectory, ".openapi-generator-ignore"));
70
- fs__default["default"].rmSync(path.resolve(resolvedOutputDirectory, ".openapi-generator"), {
69
+ fs__default.default.removeSync(path.resolve(resolvedOutputDirectory, ".openapi-generator-ignore"));
70
+ fs__default.default.rmSync(path.resolve(resolvedOutputDirectory, ".openapi-generator"), {
71
71
  recursive: true,
72
72
  force: true
73
73
  });
@@ -76,11 +76,11 @@ async function command$2(outputPackage) {
76
76
  try {
77
77
  await generate$1(outputPackage);
78
78
  console.log(
79
- chalk__default["default"].green(`Generated client in ${outputPackage}/${helpers.OUTPUT_PATH}`)
79
+ chalk__default.default.green(`Generated client in ${outputPackage}/${helpers.OUTPUT_PATH}`)
80
80
  );
81
81
  } catch (err) {
82
82
  console.log();
83
- console.log(chalk__default["default"].red(`Client generation failed:`));
83
+ console.log(chalk__default.default.red(`Client generation failed:`));
84
84
  console.log(err);
85
85
  process.exit(1);
86
86
  }
@@ -89,9 +89,9 @@ async function command$2(outputPackage) {
89
89
  const exec = util.promisify(child_process.exec);
90
90
  async function generate() {
91
91
  const openapiPath = await helpers.getPathToCurrentOpenApiSpec();
92
- const yaml = YAML__default["default"].load(await fs__default["default"].readFile(openapiPath, "utf8"));
92
+ const yaml = YAML__default.default.load(await fs__default.default.readFile(openapiPath, "utf8"));
93
93
  const tsPath = paths.paths.resolveTarget(helpers.TS_SCHEMA_PATH);
94
- await fs__default["default"].writeFile(
94
+ await fs__default.default.writeFile(
95
95
  tsPath,
96
96
  `//
97
97
 
@@ -115,9 +115,9 @@ export const createOpenApiRouter = async (
115
115
  async function command$1() {
116
116
  try {
117
117
  await generate();
118
- console.log(chalk__default["default"].green("Generated all files."));
118
+ console.log(chalk__default.default.green("Generated all files."));
119
119
  } catch (err) {
120
- console.log(chalk__default["default"].red(`OpenAPI server stub generation failed.`));
120
+ console.log(chalk__default.default.red(`OpenAPI server stub generation failed.`));
121
121
  console.log(err.message);
122
122
  process.exit(1);
123
123
  }
@@ -126,7 +126,7 @@ async function command$1() {
126
126
  async function command(opts) {
127
127
  if (!opts.clientPackage && !opts.server) {
128
128
  console.log(
129
- chalk__default["default"].red("Either --client-package or --server must be defined.")
129
+ chalk__default.default.red("Either --client-package or --server must be defined.")
130
130
  );
131
131
  process.exit(1);
132
132
  }
@@ -139,4 +139,4 @@ async function command(opts) {
139
139
  }
140
140
 
141
141
  exports.command = command;
142
- //# sourceMappingURL=index-c6ffc4f4.cjs.js.map
142
+ //# sourceMappingURL=index-CM0bJMpv.cjs.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var helpers = require('./helpers-712dfada.cjs.js');
5
- var paths = require('./paths-9ab9b8a8.cjs.js');
4
+ var helpers = require('./helpers-Dd7PBM8s.cjs.js');
5
+ var paths = require('./paths-BvbxdT_S.cjs.js');
6
6
  var chalk = require('chalk');
7
- var exec = require('./exec-7bf444eb.cjs.js');
7
+ var exec = require('./exec-d7-AweRf.cjs.js');
8
8
  require('path');
9
9
  require('@backstage/cli-common');
10
10
  require('@backstage/cli-node');
@@ -12,10 +12,10 @@ require('minimatch');
12
12
  require('util');
13
13
  require('child_process');
14
14
 
15
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
16
16
 
17
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
18
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
17
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
18
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
19
19
 
20
20
  const ROUTER_TEST_PATHS = [
21
21
  "src/service/router.test.ts",
@@ -30,10 +30,10 @@ async function init() {
30
30
  );
31
31
  }
32
32
  const opticConfigFilePath = await helpers.getRelativePathToFile("optic.yml");
33
- if (await fs__default["default"].pathExists(opticConfigFilePath)) {
33
+ if (await fs__default.default.pathExists(opticConfigFilePath)) {
34
34
  throw new Error(`This directory already has an optic.yml file. Exiting.`);
35
35
  }
36
- await fs__default["default"].writeFile(
36
+ await fs__default.default.writeFile(
37
37
  opticConfigFilePath,
38
38
  `ruleset:
39
39
  - breaking-changes
@@ -61,13 +61,13 @@ capture:
61
61
  async function singleCommand() {
62
62
  try {
63
63
  await init();
64
- console.log(chalk__default["default"].green(`Successfully configured.`));
64
+ console.log(chalk__default.default.green(`Successfully configured.`));
65
65
  } catch (err) {
66
- console.log(chalk__default["default"].red(`OpenAPI tooling initialization failed.`));
66
+ console.log(chalk__default.default.red(`OpenAPI tooling initialization failed.`));
67
67
  console.log(err.message);
68
68
  process.exit(1);
69
69
  }
70
70
  }
71
71
 
72
72
  exports.singleCommand = singleCommand;
73
- //# sourceMappingURL=init-3d29e55d.cjs.js.map
73
+ //# sourceMappingURL=init-q37Rum6N.cjs.js.map
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var paths = require('./paths-9ab9b8a8.cjs.js');
3
+ var paths = require('./paths-BvbxdT_S.cjs.js');
4
4
  var pLimit = require('p-limit');
5
5
  var os = require('os');
6
6
  var path = require('path');
7
7
  var fs = require('fs-extra');
8
- var util = require('./util-bfc74a41.cjs.js');
8
+ var util = require('./util-BhlP_S3V.cjs.js');
9
9
  require('@backstage/cli-common');
10
10
  require('@backstage/cli-node');
11
11
  require('minimatch');
12
12
  require('child_process');
13
13
 
14
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
15
15
 
16
- var pLimit__default = /*#__PURE__*/_interopDefaultLegacy(pLimit);
17
- var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
18
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
16
+ var pLimit__default = /*#__PURE__*/_interopDefaultCompat(pLimit);
17
+ var os__default = /*#__PURE__*/_interopDefaultCompat(os);
18
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
19
19
 
20
20
  const ignoredPackages = ["packages/techdocs-cli-embedded-app"];
21
21
  function logKnipReportInstructions() {
@@ -62,14 +62,14 @@ async function generateKnipConfig({ packageDir }) {
62
62
  // this uses `declare module` in .d.ts so is implicitly used whenever extensions are needed
63
63
  ]
64
64
  };
65
- await fs__default["default"].writeFile(
65
+ await fs__default.default.writeFile(
66
66
  `${packageDir}/knip.json`,
67
67
  JSON.stringify(knipConfig, null, 2)
68
68
  );
69
69
  }
70
70
  function cleanKnipConfig({ packageDir }) {
71
- if (fs__default["default"].existsSync(`${packageDir}/knip.json`)) {
72
- fs__default["default"].rmSync(`${packageDir}/knip.json`);
71
+ if (fs__default.default.existsSync(`${packageDir}/knip.json`)) {
72
+ fs__default.default.rmSync(`${packageDir}/knip.json`);
73
73
  }
74
74
  }
75
75
  async function handlePackage({
@@ -100,7 +100,7 @@ async function handlePackage({
100
100
  "--reporter markdown"
101
101
  );
102
102
  cleanKnipConfig({ packageDir: fullDir });
103
- const existingReport = await fs__default["default"].readFile(reportPath, "utf8").catch((error) => {
103
+ const existingReport = await fs__default.default.readFile(reportPath, "utf8").catch((error) => {
104
104
  if (error.code === "ENOENT") {
105
105
  return void 0;
106
106
  }
@@ -109,7 +109,7 @@ async function handlePackage({
109
109
  if (existingReport !== report) {
110
110
  if (isLocalBuild) {
111
111
  console.warn(`Knip report changed for ${packageDir}`);
112
- await fs__default["default"].writeFile(reportPath, report);
112
+ await fs__default.default.writeFile(reportPath, report);
113
113
  } else {
114
114
  logKnipReportInstructions();
115
115
  if (existingReport) {
@@ -133,7 +133,7 @@ async function runKnipReports({
133
133
  isLocalBuild
134
134
  }) {
135
135
  const knipDir = paths.paths.resolveTargetRoot("./node_modules/knip/bin/");
136
- const limiter = pLimit__default["default"](os__default["default"].cpus().length);
136
+ const limiter = pLimit__default.default(os__default.default.cpus().length);
137
137
  try {
138
138
  await Promise.all(
139
139
  packageDirs.map(
@@ -187,4 +187,4 @@ const buildKnipReports = async (paths$1 = [], opts) => {
187
187
  };
188
188
 
189
189
  exports.buildKnipReports = buildKnipReports;
190
- //# sourceMappingURL=knip-reports-f68aec50.cjs.js.map
190
+ //# sourceMappingURL=knip-reports-BbrRgCsA.cjs.js.map
@@ -5,12 +5,12 @@ var spectralParsers = require('@stoplight/spectral-parsers');
5
5
  var ruleset = require('@apisyouwonthate/style-guide');
6
6
  var fs = require('fs-extra');
7
7
  var chalk = require('chalk');
8
- var runner = require('./runner-d5b73286.cjs.js');
8
+ var runner = require('./runner-CRAhuK8A.cjs.js');
9
9
  var spectralRulesets = require('@stoplight/spectral-rulesets');
10
10
  var types = require('@stoplight/types');
11
11
  var spectralFormatters = require('@stoplight/spectral-formatters');
12
- var helpers = require('./helpers-712dfada.cjs.js');
13
- require('./paths-9ab9b8a8.cjs.js');
12
+ var helpers = require('./helpers-Dd7PBM8s.cjs.js');
13
+ require('./paths-BvbxdT_S.cjs.js');
14
14
  require('@backstage/cli-common');
15
15
  require('@backstage/cli-node');
16
16
  require('minimatch');
@@ -18,11 +18,11 @@ require('path');
18
18
  require('p-limit');
19
19
  require('portfinder');
20
20
 
21
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
22
22
 
23
- var ruleset__default = /*#__PURE__*/_interopDefaultLegacy(ruleset);
24
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
25
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
23
+ var ruleset__default = /*#__PURE__*/_interopDefaultCompat(ruleset);
24
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
25
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
26
26
 
27
27
  async function lint(directoryPath, config) {
28
28
  const { strict } = config != null ? config : {};
@@ -32,12 +32,12 @@ async function lint(directoryPath, config) {
32
32
  } catch {
33
33
  return;
34
34
  }
35
- const openapiFileContent = await fs__default["default"].readFile(openapiPath, "utf8");
35
+ const openapiFileContent = await fs__default.default.readFile(openapiPath, "utf8");
36
36
  const document = new spectralCore.Document(openapiFileContent, spectralParsers.Yaml, openapiPath);
37
37
  const spectral = new spectralCore.Spectral();
38
38
  const backstageRuleset = new spectralCore.Ruleset(
39
39
  {
40
- extends: [spectralRulesets.oas, ruleset__default["default"]],
40
+ extends: [spectralRulesets.oas, ruleset__default.default],
41
41
  overrides: [
42
42
  {
43
43
  files: ["*"],
@@ -78,7 +78,7 @@ async function bulkCommand(paths = [], options) {
78
78
  if (resultText) {
79
79
  console.log();
80
80
  console.log(
81
- chalk__default["default"].red(`OpenAPI yaml file linting failed in ${relativeDir}:`)
81
+ chalk__default.default.red(`OpenAPI yaml file linting failed in ${relativeDir}:`)
82
82
  );
83
83
  console.log(resultText.trimStart());
84
84
  failed = true;
@@ -87,9 +87,9 @@ async function bulkCommand(paths = [], options) {
87
87
  if (failed) {
88
88
  process.exit(1);
89
89
  } else {
90
- console.log(chalk__default["default"].green("Linted all files."));
90
+ console.log(chalk__default.default.green("Linted all files."));
91
91
  }
92
92
  }
93
93
 
94
94
  exports.bulkCommand = bulkCommand;
95
- //# sourceMappingURL=lint-5433166f.cjs.js.map
95
+ //# sourceMappingURL=lint-BNE-BGv5.cjs.js.map
@@ -46,4 +46,4 @@ function isChildPath(base, path$1) {
46
46
 
47
47
  exports.paths = paths;
48
48
  exports.resolvePackagePaths = resolvePackagePaths;
49
- //# sourceMappingURL=paths-9ab9b8a8.cjs.js.map
49
+ //# sourceMappingURL=paths-BvbxdT_S.cjs.js.map
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var paths = require('./paths-9ab9b8a8.cjs.js');
3
+ var paths = require('./paths-BvbxdT_S.cjs.js');
4
4
  var pLimit = require('p-limit');
5
5
  var path = require('path');
6
6
  var portFinder = require('portfinder');
7
7
 
8
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
9
9
 
10
- var pLimit__default = /*#__PURE__*/_interopDefaultLegacy(pLimit);
11
- var portFinder__default = /*#__PURE__*/_interopDefaultLegacy(portFinder);
10
+ var pLimit__default = /*#__PURE__*/_interopDefaultCompat(pLimit);
11
+ var portFinder__default = /*#__PURE__*/_interopDefaultCompat(portFinder);
12
12
 
13
13
  async function runner(paths$1, command, options) {
14
14
  var _a;
15
15
  const packages = await paths.resolvePackagePaths({ paths: paths$1 });
16
- const limit = pLimit__default["default"]((_a = options == null ? void 0 : options.concurrencyLimit) != null ? _a : 5);
17
- let port = (options == null ? void 0 : options.startingPort) && await portFinder__default["default"].getPortPromise({
16
+ const limit = pLimit__default.default((_a = options == null ? void 0 : options.concurrencyLimit) != null ? _a : 5);
17
+ let port = (options == null ? void 0 : options.startingPort) && await portFinder__default.default.getPortPromise({
18
18
  // Prevent collisions with optic which runs 8000->8999
19
19
  port: options.startingPort,
20
20
  stopPort: options.startingPort + 1e3
@@ -25,7 +25,7 @@ async function runner(paths$1, command, options) {
25
25
  let resultText = "";
26
26
  try {
27
27
  if (port)
28
- port = (options == null ? void 0 : options.startingPort) && await portFinder__default["default"].getPortPromise({
28
+ port = (options == null ? void 0 : options.startingPort) && await portFinder__default.default.getPortPromise({
29
29
  // Prevent collisions with optic which runs 8000->8999
30
30
  port: port + 1,
31
31
  stopPort: options.startingPort + 1e3
@@ -46,4 +46,4 @@ async function runner(paths$1, command, options) {
46
46
  }
47
47
 
48
48
  exports.runner = runner;
49
- //# sourceMappingURL=runner-d5b73286.cjs.js.map
49
+ //# sourceMappingURL=runner-CRAhuK8A.cjs.js.map
@@ -3,10 +3,10 @@
3
3
  var fs = require('fs-extra');
4
4
  var path = require('path');
5
5
  var chalk = require('chalk');
6
- var runner = require('./runner-d5b73286.cjs.js');
7
- var helpers = require('./helpers-712dfada.cjs.js');
8
- var paths = require('./paths-9ab9b8a8.cjs.js');
9
- var exec = require('./exec-7bf444eb.cjs.js');
6
+ var runner = require('./runner-CRAhuK8A.cjs.js');
7
+ var helpers = require('./helpers-Dd7PBM8s.cjs.js');
8
+ var paths = require('./paths-BvbxdT_S.cjs.js');
9
+ var exec = require('./exec-d7-AweRf.cjs.js');
10
10
  require('p-limit');
11
11
  require('portfinder');
12
12
  require('@backstage/cli-common');
@@ -15,10 +15,10 @@ require('minimatch');
15
15
  require('util');
16
16
  require('child_process');
17
17
 
18
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
19
19
 
20
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
21
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
20
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
21
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
22
22
 
23
23
  async function test(directoryPath, { port }, options) {
24
24
  let openapiPath = path.join(directoryPath, helpers.YAML_SCHEMA_PATH);
@@ -28,7 +28,7 @@ async function test(directoryPath, { port }, options) {
28
28
  return;
29
29
  }
30
30
  const opticConfigFilePath = path.join(directoryPath, "optic.yml");
31
- if (!await fs__default["default"].pathExists(opticConfigFilePath)) {
31
+ if (!await fs__default.default.pathExists(opticConfigFilePath)) {
32
32
  return;
33
33
  }
34
34
  let opticLocation = "";
@@ -79,7 +79,7 @@ async function bulkCommand(paths = [], options) {
79
79
  if (resultText) {
80
80
  console.log();
81
81
  console.log(
82
- chalk__default["default"].red(
82
+ chalk__default.default.red(
83
83
  `OpenAPI runtime validation against tests failed in ${relativeDir}:`
84
84
  )
85
85
  );
@@ -90,9 +90,9 @@ async function bulkCommand(paths = [], options) {
90
90
  if (failed) {
91
91
  process.exit(1);
92
92
  } else {
93
- console.log(chalk__default["default"].green("Verified all specifications against test data."));
93
+ console.log(chalk__default.default.green("Verified all specifications against test data."));
94
94
  }
95
95
  }
96
96
 
97
97
  exports.bulkCommand = bulkCommand;
98
- //# sourceMappingURL=test-df73bb76.cjs.js.map
98
+ //# sourceMappingURL=test-Bjep-DJ3.cjs.js.map
@@ -4,12 +4,12 @@ var fs = require('fs');
4
4
  var path = require('path');
5
5
  var chalk = require('chalk');
6
6
  var getPackages = require('@manypkg/get-packages');
7
- var entryPoints = require('./entryPoints-c9b88245.cjs.js');
7
+ var entryPoints = require('./entryPoints-BYUBMQoL.cjs.js');
8
8
 
9
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
10
10
 
11
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
12
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
11
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
12
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
13
13
 
14
14
  var typeDeps = async () => {
15
15
  const { packages } = await getPackages.getPackages(path.resolve("."));
@@ -22,21 +22,21 @@ var typeDeps = async () => {
22
22
  if (errors.length) {
23
23
  hadErrors = true;
24
24
  console.error(
25
- `Incorrect type dependencies in ${chalk__default["default"].yellow(pkg.packageJson.name)}:`
25
+ `Incorrect type dependencies in ${chalk__default.default.yellow(pkg.packageJson.name)}:`
26
26
  );
27
27
  for (const error of errors) {
28
28
  if (error.name === "WrongDepError") {
29
29
  console.error(
30
- ` Move from ${chalk__default["default"].red(error.from)} to ${chalk__default["default"].green(
30
+ ` Move from ${chalk__default.default.red(error.from)} to ${chalk__default.default.green(
31
31
  error.to
32
- )}: ${chalk__default["default"].cyan(error.dep)}`
32
+ )}: ${chalk__default.default.cyan(error.dep)}`
33
33
  );
34
34
  } else if (error.name === "MissingDepError") {
35
35
  console.error(
36
- ` Missing a type dependency: ${chalk__default["default"].cyan(error.dep)}`
36
+ ` Missing a type dependency: ${chalk__default.default.cyan(error.dep)}`
37
37
  );
38
38
  } else {
39
- console.error(` Unknown error, ${chalk__default["default"].red(error)}`);
39
+ console.error(` Unknown error, ${chalk__default.default.red(error)}`);
40
40
  }
41
41
  }
42
42
  }
@@ -44,13 +44,13 @@ var typeDeps = async () => {
44
44
  if (hadErrors) {
45
45
  console.error();
46
46
  console.error(
47
- chalk__default["default"].red("At least one package had incorrect type dependencies")
47
+ chalk__default.default.red("At least one package had incorrect type dependencies")
48
48
  );
49
49
  process.exit(2);
50
50
  }
51
51
  };
52
52
  function shouldCheckTypes(pkg) {
53
- return !pkg.packageJson.private && pkg.packageJson.types && fs__default["default"].existsSync(path.resolve(pkg.dir, "dist/index.d.ts"));
53
+ return !pkg.packageJson.private && pkg.packageJson.types && fs__default.default.existsSync(path.resolve(pkg.dir, "dist/index.d.ts"));
54
54
  }
55
55
  function findAllDeps(declSrc) {
56
56
  const importedDeps = (declSrc.match(/^import .* from '.*';$/gm) || []).map((match) => {
@@ -67,7 +67,7 @@ function checkTypes(pkg) {
67
67
  var _a;
68
68
  const entryPointNames = (_a = entryPoints.getPackageExportNames(pkg.packageJson)) != null ? _a : ["index"];
69
69
  const allDeps = entryPointNames.flatMap((name) => {
70
- const typeDecl = fs__default["default"].readFileSync(
70
+ const typeDecl = fs__default.default.readFileSync(
71
71
  path.resolve(pkg.dir, `dist/${name}.d.ts`),
72
72
  "utf8"
73
73
  );
@@ -109,10 +109,10 @@ function findTypesPackage(dep, pkg) {
109
109
  require.resolve(`${dep}.d.ts`, { paths: [pkg.dir] });
110
110
  return void 0;
111
111
  } catch {
112
- if (fs__default["default"].existsSync(path.resolve(pkg.dir, `node_modules/${dep}.d.ts`))) {
112
+ if (fs__default.default.existsSync(path.resolve(pkg.dir, `node_modules/${dep}.d.ts`))) {
113
113
  return void 0;
114
114
  }
115
- if (fs__default["default"].existsSync(
115
+ if (fs__default.default.existsSync(
116
116
  path.resolve(pkg.dir, `../../node_modules/${dep}.d.ts`)
117
117
  )) {
118
118
  return void 0;
@@ -173,5 +173,5 @@ function mkErr(name, msg, extra) {
173
173
  return error;
174
174
  }
175
175
 
176
- exports["default"] = typeDeps;
177
- //# sourceMappingURL=type-deps-5eacd931.cjs.js.map
176
+ exports.default = typeDeps;
177
+ //# sourceMappingURL=type-deps-D_eqfKIv.cjs.js.map
@@ -4,12 +4,12 @@ var child_process = require('child_process');
4
4
  var os = require('os');
5
5
  var pLimit = require('p-limit');
6
6
 
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
8
 
9
- var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
10
- var pLimit__default = /*#__PURE__*/_interopDefaultLegacy(pLimit);
9
+ var os__default = /*#__PURE__*/_interopDefaultCompat(os);
10
+ var pLimit__default = /*#__PURE__*/_interopDefaultCompat(pLimit);
11
11
 
12
- const limiter = pLimit__default["default"](os__default["default"].cpus().length);
12
+ const limiter = pLimit__default.default(os__default.default.cpus().length);
13
13
  function createBinRunner(cwd, path) {
14
14
  return async (...command) => limiter(
15
15
  () => new Promise((resolve, reject) => {
@@ -38,4 +38,4 @@ ${stderr}`));
38
38
  }
39
39
 
40
40
  exports.createBinRunner = createBinRunner;
41
- //# sourceMappingURL=util-bfc74a41.cjs.js.map
41
+ //# sourceMappingURL=util-BhlP_S3V.cjs.js.map
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var YAML = require('js-yaml');
5
+ var lodash = require('lodash');
6
+ var path = require('path');
7
+ var chalk = require('chalk');
8
+ var Parser = require('@apidevtools/swagger-parser');
9
+ var runner = require('./runner-CRAhuK8A.cjs.js');
10
+ var paths = require('./paths-BvbxdT_S.cjs.js');
11
+ var helpers = require('./helpers-Dd7PBM8s.cjs.js');
12
+ require('p-limit');
13
+ require('portfinder');
14
+ require('@backstage/cli-common');
15
+ require('@backstage/cli-node');
16
+ require('minimatch');
17
+
18
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
19
+
20
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
21
+ var YAML__default = /*#__PURE__*/_interopDefaultCompat(YAML);
22
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
23
+ var Parser__default = /*#__PURE__*/_interopDefaultCompat(Parser);
24
+
25
+ async function verify(directoryPath) {
26
+ let openapiPath = "";
27
+ try {
28
+ openapiPath = await helpers.getPathToOpenApiSpec(directoryPath);
29
+ } catch {
30
+ return;
31
+ }
32
+ const yaml = YAML__default.default.load(await fs__default.default.readFile(openapiPath, "utf8"));
33
+ await Parser__default.default.validate(lodash.cloneDeep(yaml));
34
+ const schemaPath = path.join(directoryPath, helpers.TS_SCHEMA_PATH);
35
+ if (!await fs__default.default.pathExists(schemaPath)) {
36
+ throw new Error(`No \`${helpers.TS_SCHEMA_PATH}\` file found.`);
37
+ }
38
+ const schema = await import(path.resolve(path.join(directoryPath, helpers.TS_MODULE)));
39
+ if (!schema.spec) {
40
+ throw new Error(`\`${helpers.TS_SCHEMA_PATH}\` needs to have a 'spec' export.`);
41
+ }
42
+ if (!lodash.isEqual(schema.spec, yaml)) {
43
+ const path$1 = path.relative(paths.paths.targetRoot, directoryPath);
44
+ throw new Error(
45
+ `\`${helpers.YAML_SCHEMA_PATH}\` and \`${helpers.TS_SCHEMA_PATH}\` do not match. Please run \`yarn backstage-repo-tools package schema openapi generate\` from '${path$1}' to regenerate \`${helpers.TS_SCHEMA_PATH}\`.`
46
+ );
47
+ }
48
+ }
49
+ async function bulkCommand(paths = []) {
50
+ const resultsList = await runner.runner(paths, (dir) => verify(dir));
51
+ let failed = false;
52
+ for (const { relativeDir, resultText } of resultsList) {
53
+ if (resultText) {
54
+ console.log();
55
+ console.log(chalk__default.default.red(`OpenAPI validation failed in ${relativeDir}:`));
56
+ console.log(resultText.trimStart());
57
+ failed = true;
58
+ }
59
+ }
60
+ if (failed) {
61
+ process.exit(1);
62
+ } else {
63
+ console.log(chalk__default.default.green("Verified all files."));
64
+ }
65
+ }
66
+
67
+ exports.bulkCommand = bulkCommand;
68
+ //# sourceMappingURL=verify-BX1iUi_q.cjs.js.map
package/dist/index.cjs.js CHANGED
@@ -4,9 +4,9 @@ var commander = require('commander');
4
4
  var chalk = require('chalk');
5
5
  var errors = require('@backstage/errors');
6
6
 
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
8
 
9
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
9
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
10
10
 
11
11
  var __defProp = Object.defineProperty;
12
12
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -31,13 +31,13 @@ class ExitCodeError extends CustomError {
31
31
  function exitWithError(error) {
32
32
  if (error instanceof ExitCodeError) {
33
33
  process.stderr.write(`
34
- ${chalk__default["default"].red(error.message)}
34
+ ${chalk__default.default.red(error.message)}
35
35
 
36
36
  `);
37
37
  process.exit(error.code);
38
38
  } else {
39
39
  process.stderr.write(`
40
- ${chalk__default["default"].red(`${error}`)}
40
+ ${chalk__default.default.red(`${error}`)}
41
41
 
42
42
  `);
43
43
  process.exit(1);
@@ -54,7 +54,7 @@ function registerPackageCommand(program) {
54
54
  "Initialize any required files to use the OpenAPI tooling for this package."
55
55
  ).action(
56
56
  lazy(
57
- () => Promise.resolve().then(function () { return require('./cjs/init-3d29e55d.cjs.js'); }).then((m) => m.singleCommand)
57
+ () => Promise.resolve().then(function () { return require('./cjs/init-q37Rum6N.cjs.js'); }).then((m) => m.singleCommand)
58
58
  )
59
59
  );
60
60
  openApiCommand.command("generate").option(
@@ -64,7 +64,7 @@ function registerPackageCommand(program) {
64
64
  "Command to generate a client and/or a server stub from an OpenAPI spec."
65
65
  ).action(
66
66
  lazy(
67
- () => Promise.resolve().then(function () { return require('./cjs/index-c6ffc4f4.cjs.js'); }).then((m) => m.command)
67
+ () => Promise.resolve().then(function () { return require('./cjs/index-CM0bJMpv.cjs.js'); }).then((m) => m.command)
68
68
  )
69
69
  );
70
70
  }
@@ -76,17 +76,17 @@ function registerRepoCommand(program) {
76
76
  "Verify that all OpenAPI schemas are valid and have a matching `schemas/openapi.generated.ts` file."
77
77
  ).action(
78
78
  lazy(
79
- () => Promise.resolve().then(function () { return require('./cjs/verify-dad6101f.cjs.js'); }).then((m) => m.bulkCommand)
79
+ () => Promise.resolve().then(function () { return require('./cjs/verify-BX1iUi_q.cjs.js'); }).then((m) => m.bulkCommand)
80
80
  )
81
81
  );
82
82
  openApiCommand.command("lint [paths...]").description("Lint OpenAPI schemas.").option(
83
83
  "--strict",
84
84
  "Fail on any linting severity messages, not just errors."
85
85
  ).action(
86
- lazy(() => Promise.resolve().then(function () { return require('./cjs/lint-5433166f.cjs.js'); }).then((m) => m.bulkCommand))
86
+ lazy(() => Promise.resolve().then(function () { return require('./cjs/lint-BNE-BGv5.cjs.js'); }).then((m) => m.bulkCommand))
87
87
  );
88
88
  openApiCommand.command("test [paths...]").description("Test OpenAPI schemas against written tests").option("--update", "Update the spec on failure.").action(
89
- lazy(() => Promise.resolve().then(function () { return require('./cjs/test-df73bb76.cjs.js'); }).then((m) => m.bulkCommand))
89
+ lazy(() => Promise.resolve().then(function () { return require('./cjs/test-Bjep-DJ3.cjs.js'); }).then((m) => m.bulkCommand))
90
90
  );
91
91
  }
92
92
  function registerCommands(program) {
@@ -113,10 +113,10 @@ function registerCommands(program) {
113
113
  "Turn on release tag validation for the public, beta, and alpha APIs"
114
114
  ).description("Generate an API report for selected packages").action(
115
115
  lazy(
116
- () => Promise.resolve().then(function () { return require('./cjs/api-reports-6fbf90c8.cjs.js'); }).then((m) => m.buildApiReports)
116
+ () => Promise.resolve().then(function () { return require('./cjs/api-reports-BILnGZ_-.cjs.js'); }).then((m) => m.buildApiReports)
117
117
  )
118
118
  );
119
- program.command("type-deps").description("Find inconsistencies in types of all packages and plugins").action(lazy(() => Promise.resolve().then(function () { return require('./cjs/type-deps-5eacd931.cjs.js'); }).then((m) => m.default)));
119
+ program.command("type-deps").description("Find inconsistencies in types of all packages and plugins").action(lazy(() => Promise.resolve().then(function () { return require('./cjs/type-deps-D_eqfKIv.cjs.js'); }).then((m) => m.default)));
120
120
  program.command("generate-catalog-info").option(
121
121
  "--dry-run",
122
122
  "Shows what would happen without actually writing any yaml."
@@ -125,14 +125,14 @@ function registerCommands(program) {
125
125
  "CI run checks that there are no changes to catalog-info.yaml files"
126
126
  ).description("Create or fix info yaml files for all backstage packages").action(
127
127
  lazy(
128
- () => Promise.resolve().then(function () { return require('./cjs/generate-catalog-info-e7071c1c.cjs.js'); }).then(
128
+ () => Promise.resolve().then(function () { return require('./cjs/generate-catalog-info-CwsIGc45.cjs.js'); }).then(
129
129
  (m) => m.default
130
130
  )
131
131
  )
132
132
  );
133
133
  program.command("knip-reports [paths...]").option("--ci", "CI run checks that there is no changes on knip reports").description("Generate a knip report for selected packages").action(
134
134
  lazy(
135
- () => Promise.resolve().then(function () { return require('./cjs/knip-reports-f68aec50.cjs.js'); }).then((m) => m.buildKnipReports)
135
+ () => Promise.resolve().then(function () { return require('./cjs/knip-reports-BbrRgCsA.cjs.js'); }).then((m) => m.buildKnipReports)
136
136
  )
137
137
  );
138
138
  registerPackageCommand(program);
@@ -151,14 +151,14 @@ function lazy(getActionFunc) {
151
151
  };
152
152
  }
153
153
 
154
- var version = "0.7.0";
154
+ var version = "0.7.2";
155
155
 
156
156
  const main = (argv) => {
157
157
  commander.program.name("backstage-repo-tools").version(version);
158
158
  registerCommands(commander.program);
159
159
  commander.program.on("command:*", () => {
160
160
  console.log();
161
- console.log(chalk__default["default"].red(`Invalid command: ${commander.program.args.join(" ")}`));
161
+ console.log(chalk__default.default.red(`Invalid command: ${commander.program.args.join(" ")}`));
162
162
  console.log();
163
163
  commander.program.outputHelp();
164
164
  process.exit(1);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/repo-tools",
3
3
  "description": "CLI for Backstage repo tooling ",
4
- "version": "0.7.0",
4
+ "version": "0.7.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -32,7 +32,7 @@
32
32
  "dependencies": {
33
33
  "@apidevtools/swagger-parser": "^10.1.0",
34
34
  "@apisyouwonthate/style-guide": "^1.4.0",
35
- "@backstage/backend-common": "^0.21.4",
35
+ "@backstage/backend-common": "^0.21.6",
36
36
  "@backstage/catalog-model": "^1.4.5",
37
37
  "@backstage/cli-common": "^0.1.13",
38
38
  "@backstage/cli-node": "^0.2.4",
@@ -62,8 +62,8 @@
62
62
  "yaml-diff-patch": "^2.0.0"
63
63
  },
64
64
  "devDependencies": {
65
- "@backstage/backend-test-utils": "^0.3.4",
66
- "@backstage/cli": "^0.26.0",
65
+ "@backstage/backend-test-utils": "^0.3.6",
66
+ "@backstage/cli": "^0.26.2",
67
67
  "@backstage/types": "^1.1.1",
68
68
  "@types/is-glob": "^4.0.2",
69
69
  "@types/node": "^18.17.8",
@@ -1,86 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('fs-extra');
4
- var YAML = require('js-yaml');
5
- var lodash = require('lodash');
6
- var path = require('path');
7
- var chalk = require('chalk');
8
- var Parser = require('@apidevtools/swagger-parser');
9
- var runner = require('./runner-d5b73286.cjs.js');
10
- var paths = require('./paths-9ab9b8a8.cjs.js');
11
- var helpers = require('./helpers-712dfada.cjs.js');
12
- require('p-limit');
13
- require('portfinder');
14
- require('@backstage/cli-common');
15
- require('@backstage/cli-node');
16
- require('minimatch');
17
-
18
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
-
20
- function _interopNamespace(e) {
21
- if (e && e.__esModule) return e;
22
- var n = Object.create(null);
23
- if (e) {
24
- Object.keys(e).forEach(function (k) {
25
- if (k !== 'default') {
26
- var d = Object.getOwnPropertyDescriptor(e, k);
27
- Object.defineProperty(n, k, d.get ? d : {
28
- enumerable: true,
29
- get: function () { return e[k]; }
30
- });
31
- }
32
- });
33
- }
34
- n["default"] = e;
35
- return Object.freeze(n);
36
- }
37
-
38
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
39
- var YAML__default = /*#__PURE__*/_interopDefaultLegacy(YAML);
40
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
41
- var Parser__default = /*#__PURE__*/_interopDefaultLegacy(Parser);
42
-
43
- async function verify(directoryPath) {
44
- let openapiPath = "";
45
- try {
46
- openapiPath = await helpers.getPathToOpenApiSpec(directoryPath);
47
- } catch {
48
- return;
49
- }
50
- const yaml = YAML__default["default"].load(await fs__default["default"].readFile(openapiPath, "utf8"));
51
- await Parser__default["default"].validate(lodash.cloneDeep(yaml));
52
- const schemaPath = path.join(directoryPath, helpers.TS_SCHEMA_PATH);
53
- if (!await fs__default["default"].pathExists(schemaPath)) {
54
- throw new Error(`No \`${helpers.TS_SCHEMA_PATH}\` file found.`);
55
- }
56
- const schema = await (function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(path.resolve(path.join(directoryPath, helpers.TS_MODULE)));
57
- if (!schema.spec) {
58
- throw new Error(`\`${helpers.TS_SCHEMA_PATH}\` needs to have a 'spec' export.`);
59
- }
60
- if (!lodash.isEqual(schema.spec, yaml)) {
61
- const path$1 = path.relative(paths.paths.targetRoot, directoryPath);
62
- throw new Error(
63
- `\`${helpers.YAML_SCHEMA_PATH}\` and \`${helpers.TS_SCHEMA_PATH}\` do not match. Please run \`yarn backstage-repo-tools package schema openapi generate\` from '${path$1}' to regenerate \`${helpers.TS_SCHEMA_PATH}\`.`
64
- );
65
- }
66
- }
67
- async function bulkCommand(paths = []) {
68
- const resultsList = await runner.runner(paths, (dir) => verify(dir));
69
- let failed = false;
70
- for (const { relativeDir, resultText } of resultsList) {
71
- if (resultText) {
72
- console.log();
73
- console.log(chalk__default["default"].red(`OpenAPI validation failed in ${relativeDir}:`));
74
- console.log(resultText.trimStart());
75
- failed = true;
76
- }
77
- }
78
- if (failed) {
79
- process.exit(1);
80
- } else {
81
- console.log(chalk__default["default"].green("Verified all files."));
82
- }
83
- }
84
-
85
- exports.bulkCommand = bulkCommand;
86
- //# sourceMappingURL=verify-dad6101f.cjs.js.map