@automatify-au/cli 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -42,12 +42,12 @@ pnpm --filter @automatify-au/cli build
42
42
  pnpm --filter @automatify-au/cli bundle
43
43
  ```
44
44
 
45
- This produces a single self-contained bundle at `dist/automatify.js` (≈125 KB) with `@automatify/shared-types` inlined. No runtime dependencies.
45
+ This produces a single self-contained bundle at `dist/automatify.cjs` (≈125 KB) with `@automatify/shared-types` inlined. No runtime dependencies.
46
46
 
47
47
  Run built CLI:
48
48
  ```bash
49
- automatify testops --help # if linked globally (npm link)
50
- node apps/cli/dist/automatify.js --help # direct node run
49
+ automatify testops --help # if linked globally (npm link)
50
+ node apps/cli/dist/automatify.cjs --help # direct node run
51
51
  ```
52
52
 
53
53
  Dev run (for local iteration):
@@ -1,17 +1,12 @@
1
1
  #!/usr/bin/env node
2
+ "use strict";
2
3
  var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
4
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
7
  var __getProtoOf = Object.getPrototypeOf;
7
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
9
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
10
- }) : x)(function(x) {
11
- if (typeof require !== "undefined") return require.apply(this, arguments);
12
- throw Error('Dynamic require of "' + x + '" is not supported');
13
- });
14
- var __commonJS = (cb, mod) => function __require2() {
9
+ var __commonJS = (cb, mod) => function __require() {
15
10
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
16
11
  };
17
12
  var __copyProps = (to, from, except, desc) => {
@@ -33,7 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
33
28
 
34
29
  // ../../node_modules/.pnpm/buffer-crc32@1.0.0/node_modules/buffer-crc32/dist/index.cjs
35
30
  var require_dist = __commonJS({
36
- "../../node_modules/.pnpm/buffer-crc32@1.0.0/node_modules/buffer-crc32/dist/index.cjs"(exports, module) {
31
+ "../../node_modules/.pnpm/buffer-crc32@1.0.0/node_modules/buffer-crc32/dist/index.cjs"(exports2, module2) {
37
32
  "use strict";
38
33
  function getDefaultExportFromCjs(x) {
39
34
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
@@ -335,23 +330,23 @@ var require_dist = __commonJS({
335
330
  };
336
331
  var bufferCrc32 = crc32;
337
332
  var index = /* @__PURE__ */ getDefaultExportFromCjs(bufferCrc32);
338
- module.exports = index;
333
+ module2.exports = index;
339
334
  }
340
335
  });
341
336
 
342
337
  // ../../node_modules/.pnpm/yazl@3.3.1/node_modules/yazl/index.js
343
338
  var require_yazl = __commonJS({
344
- "../../node_modules/.pnpm/yazl@3.3.1/node_modules/yazl/index.js"(exports) {
345
- var fs = __require("fs");
346
- var Transform = __require("stream").Transform;
347
- var PassThrough = __require("stream").PassThrough;
348
- var zlib = __require("zlib");
349
- var util = __require("util");
350
- var EventEmitter = __require("events").EventEmitter;
351
- var errorMonitor = __require("events").errorMonitor;
339
+ "../../node_modules/.pnpm/yazl@3.3.1/node_modules/yazl/index.js"(exports2) {
340
+ var fs = require("fs");
341
+ var Transform = require("stream").Transform;
342
+ var PassThrough = require("stream").PassThrough;
343
+ var zlib = require("zlib");
344
+ var util = require("util");
345
+ var EventEmitter = require("events").EventEmitter;
346
+ var errorMonitor = require("events").errorMonitor;
352
347
  var crc32 = require_dist();
353
- exports.ZipFile = ZipFile2;
354
- exports.dateToDosDateTime = dateToDosDateTime;
348
+ exports2.ZipFile = ZipFile2;
349
+ exports2.dateToDosDateTime = dateToDosDateTime;
355
350
  util.inherits(ZipFile2, EventEmitter);
356
351
  function ZipFile2() {
357
352
  this.outputStream = new PassThrough();
@@ -993,8 +988,8 @@ function toJsonLine(data) {
993
988
  }
994
989
 
995
990
  // src/auto.ts
996
- import { existsSync as existsSync3, readFileSync as readFileSync3 } from "node:fs";
997
- import path5 from "node:path";
991
+ var import_node_fs4 = require("node:fs");
992
+ var import_node_path5 = __toESM(require("node:path"), 1);
998
993
 
999
994
  // ../../packages/shared-types/dist/index.js
1000
995
  var TestCaseStatus;
@@ -1034,8 +1029,8 @@ var Priority;
1034
1029
  })(Priority || (Priority = {}));
1035
1030
 
1036
1031
  // src/config.ts
1037
- import { existsSync, readFileSync } from "node:fs";
1038
- import path from "node:path";
1032
+ var import_node_fs = require("node:fs");
1033
+ var import_node_path = __toESM(require("node:path"), 1);
1039
1034
  var DEFAULT_CONFIG_FILENAME = ".testops-cli.json";
1040
1035
  function parseFlags(args) {
1041
1036
  const flags = {};
@@ -1071,11 +1066,11 @@ function toStringValue(value) {
1071
1066
  return typeof value === "string" ? value.trim() : "";
1072
1067
  }
1073
1068
  function readConfigFile(configPath) {
1074
- if (!existsSync(configPath)) {
1069
+ if (!(0, import_node_fs.existsSync)(configPath)) {
1075
1070
  return {};
1076
1071
  }
1077
1072
  try {
1078
- const raw = readFileSync(configPath, "utf8");
1073
+ const raw = (0, import_node_fs.readFileSync)(configPath, "utf8");
1079
1074
  const parsed = JSON.parse(raw);
1080
1075
  return typeof parsed === "object" && parsed !== null ? parsed : {};
1081
1076
  } catch {
@@ -1108,9 +1103,9 @@ function valueFromPrecedence(key, flagValue, envValue, fileValue, fallback = "")
1108
1103
  }
1109
1104
  function resolveCliConfig(args, env = process.env, cwd = process.cwd()) {
1110
1105
  const { flags, unknownFlags } = parseFlags(args);
1111
- const configPathFlag = flags["--config"] ? path.resolve(cwd, flags["--config"]) : "";
1106
+ const configPathFlag = flags["--config"] ? import_node_path.default.resolve(cwd, flags["--config"]) : "";
1112
1107
  const configPathEnv = toStringValue(env.TESTOPS_CONFIG_PATH);
1113
- const configPath = configPathFlag || (configPathEnv ? path.resolve(cwd, configPathEnv) : path.resolve(cwd, DEFAULT_CONFIG_FILENAME));
1108
+ const configPath = configPathFlag || (configPathEnv ? import_node_path.default.resolve(cwd, configPathEnv) : import_node_path.default.resolve(cwd, DEFAULT_CONFIG_FILENAME));
1114
1109
  const configPathSource = configPathFlag ? "flag" : configPathEnv ? "env" : "default";
1115
1110
  const file = readConfigFile(configPath);
1116
1111
  const baseUrlResolved = valueFromPrecedence(
@@ -1172,7 +1167,7 @@ function resolveCliConfig(args, env = process.env, cwd = process.cwd()) {
1172
1167
  if (unknownFlags.length > 0) {
1173
1168
  warnings.push(`Ignored unknown config flags: ${unknownFlags.join(", ")}`);
1174
1169
  }
1175
- if (!existsSync(configPath) && sources.configPath !== "default") {
1170
+ if (!(0, import_node_fs.existsSync)(configPath) && sources.configPath !== "default") {
1176
1171
  warnings.push(`Config file not found at ${configPath}; using env/flags/defaults.`);
1177
1172
  }
1178
1173
  return { values: config, sources, warnings };
@@ -1549,7 +1544,7 @@ function diagExecutionNoWork() {
1549
1544
  }
1550
1545
 
1551
1546
  // src/autoDiscover.ts
1552
- import path2 from "node:path";
1547
+ var import_node_path2 = __toESM(require("node:path"), 1);
1553
1548
  var RESULT_FOLDER_NAMES = /* @__PURE__ */ new Set([
1554
1549
  "results",
1555
1550
  "result",
@@ -1561,7 +1556,7 @@ var RESULT_FOLDER_NAMES = /* @__PURE__ */ new Set([
1561
1556
  "failsafe-reports"
1562
1557
  ]);
1563
1558
  function toPosix2(value) {
1564
- return value.split(path2.sep).join("/");
1559
+ return value.split(import_node_path2.default.sep).join("/");
1565
1560
  }
1566
1561
  function isJUnitXmlArtifact(filePath) {
1567
1562
  const normalized = toPosix2(filePath);
@@ -1653,8 +1648,8 @@ function discoverFeatureFiles(scannedFiles) {
1653
1648
  }
1654
1649
 
1655
1650
  // src/autoMapping.ts
1656
- import { existsSync as existsSync2, readFileSync as readFileSync2 } from "node:fs";
1657
- import path3 from "node:path";
1651
+ var import_node_fs2 = require("node:fs");
1652
+ var import_node_path3 = __toESM(require("node:path"), 1);
1658
1653
  var ISSUE_KEY_REGEX = /\b[A-Z][A-Z0-9]+-\d+\b/g;
1659
1654
  function normalizeName(value) {
1660
1655
  return value.trim().toLowerCase();
@@ -1664,10 +1659,10 @@ function extractIssueKeysFromText(text) {
1664
1659
  return [...new Set(found)].sort((a, b) => a.localeCompare(b));
1665
1660
  }
1666
1661
  function parseFeatureFile(featureAbsolutePath) {
1667
- if (!existsSync2(featureAbsolutePath)) {
1662
+ if (!(0, import_node_fs2.existsSync)(featureAbsolutePath)) {
1668
1663
  return { names: [], issueKeys: [] };
1669
1664
  }
1670
- const raw = readFileSync2(featureAbsolutePath, "utf8");
1665
+ const raw = (0, import_node_fs2.readFileSync)(featureAbsolutePath, "utf8");
1671
1666
  const lines = raw.split(/\r?\n/);
1672
1667
  const names = /* @__PURE__ */ new Set();
1673
1668
  const issueKeys = new Set(extractIssueKeysFromText(raw));
@@ -1725,7 +1720,7 @@ function buildMappingPreview(input) {
1725
1720
  const localNamesSet = /* @__PURE__ */ new Set();
1726
1721
  const issueCandidatesSet = /* @__PURE__ */ new Set();
1727
1722
  for (const featurePath of input.featurePaths) {
1728
- const absolutePath = path3.join(input.rootPath, featurePath);
1723
+ const absolutePath = import_node_path3.default.join(input.rootPath, featurePath);
1729
1724
  const parsed = parseFeatureFile(absolutePath);
1730
1725
  for (const name of parsed.names) {
1731
1726
  localNamesSet.add(name);
@@ -1774,8 +1769,8 @@ function buildMappingPreview(input) {
1774
1769
  }
1775
1770
 
1776
1771
  // src/autoScanner.ts
1777
- import { readdirSync } from "node:fs";
1778
- import path4 from "node:path";
1772
+ var import_node_fs3 = require("node:fs");
1773
+ var import_node_path4 = __toESM(require("node:path"), 1);
1779
1774
  var DEFAULT_MAX_DEPTH = 5;
1780
1775
  var DEFAULT_EXCLUDED_DIRECTORIES = /* @__PURE__ */ new Set([
1781
1776
  ".cache",
@@ -1790,7 +1785,7 @@ var DEFAULT_EXCLUDED_DIRECTORIES = /* @__PURE__ */ new Set([
1790
1785
  "node_modules"
1791
1786
  ]);
1792
1787
  function normalizeRelativePath(value) {
1793
- return value.split(path4.sep).join("/");
1788
+ return value.split(import_node_path4.default.sep).join("/");
1794
1789
  }
1795
1790
  function normalizePatterns(values) {
1796
1791
  if (!values) {
@@ -1844,16 +1839,16 @@ function scanProjectFiles(options) {
1844
1839
  const includePatterns = normalizePatterns(options.includePatterns);
1845
1840
  const excludePatterns = normalizePatterns(options.excludePatterns);
1846
1841
  const maxDepth = safeMaxDepth(options.maxDepth);
1847
- const rootPath = path4.resolve(options.rootPath);
1842
+ const rootPath = import_node_path4.default.resolve(options.rootPath);
1848
1843
  const scannedFiles = [];
1849
1844
  const visit = (absoluteDirectory, depth) => {
1850
1845
  if (depth > maxDepth) {
1851
1846
  return;
1852
1847
  }
1853
- const entries = readdirSync(absoluteDirectory, { withFileTypes: true }).slice().sort((a, b) => a.name.localeCompare(b.name));
1848
+ const entries = (0, import_node_fs3.readdirSync)(absoluteDirectory, { withFileTypes: true }).slice().sort((a, b) => a.name.localeCompare(b.name));
1854
1849
  for (const entry of entries) {
1855
- const absoluteEntryPath = path4.join(absoluteDirectory, entry.name);
1856
- const relativeEntryPath = normalizeRelativePath(path4.relative(rootPath, absoluteEntryPath));
1850
+ const absoluteEntryPath = import_node_path4.default.join(absoluteDirectory, entry.name);
1851
+ const relativeEntryPath = normalizeRelativePath(import_node_path4.default.relative(rootPath, absoluteEntryPath));
1857
1852
  if (!relativeEntryPath) {
1858
1853
  continue;
1859
1854
  }
@@ -1960,10 +1955,10 @@ function resolveRoot(rootFlag, cwd) {
1960
1955
  if (!rootFlag.trim()) {
1961
1956
  return cwd;
1962
1957
  }
1963
- return path5.resolve(cwd, rootFlag);
1958
+ return import_node_path5.default.resolve(cwd, rootFlag);
1964
1959
  }
1965
1960
  function countScenariosInFeatureFile(featurePath) {
1966
- const lines = readFileSync3(featurePath, "utf8").split(/\r?\n/).map((line) => line.trim().toLowerCase());
1961
+ const lines = (0, import_node_fs4.readFileSync)(featurePath, "utf8").split(/\r?\n/).map((line) => line.trim().toLowerCase());
1967
1962
  let count = 0;
1968
1963
  for (const line of lines) {
1969
1964
  if (line.startsWith("scenario:") || line.startsWith("scenario outline:")) {
@@ -1975,8 +1970,8 @@ function countScenariosInFeatureFile(featurePath) {
1975
1970
  function buildScenarioStats(rootPath, featurePaths) {
1976
1971
  let scenarios = 0;
1977
1972
  for (const relativePath of featurePaths) {
1978
- const absolutePath = path5.join(rootPath, relativePath);
1979
- if (!existsSync3(absolutePath)) {
1973
+ const absolutePath = import_node_path5.default.join(rootPath, relativePath);
1974
+ if (!(0, import_node_fs4.existsSync)(absolutePath)) {
1980
1975
  continue;
1981
1976
  }
1982
1977
  scenarios += countScenariosInFeatureFile(absolutePath);
@@ -2016,7 +2011,7 @@ function deriveFeatureNameFromGherkin(gherkin, fallbackPath) {
2016
2011
  return match[1].trim();
2017
2012
  }
2018
2013
  }
2019
- return path5.basename(fallbackPath, path5.extname(fallbackPath));
2014
+ return import_node_path5.default.basename(fallbackPath, import_node_path5.default.extname(fallbackPath));
2020
2015
  }
2021
2016
  function mapStepStatus(status) {
2022
2017
  const normalized = status.trim().toLowerCase();
@@ -2032,13 +2027,13 @@ function mapStepStatus(status) {
2032
2027
  return StepResult.Blocked;
2033
2028
  }
2034
2029
  function parseCucumberRunsFromArtifact(rootPath, artifactPath) {
2035
- const absolutePath = path5.join(rootPath, artifactPath);
2036
- if (!existsSync3(absolutePath)) {
2030
+ const absolutePath = import_node_path5.default.join(rootPath, artifactPath);
2031
+ if (!(0, import_node_fs4.existsSync)(absolutePath)) {
2037
2032
  return [];
2038
2033
  }
2039
2034
  let parsed;
2040
2035
  try {
2041
- parsed = JSON.parse(readFileSync3(absolutePath, "utf8"));
2036
+ parsed = JSON.parse((0, import_node_fs4.readFileSync)(absolutePath, "utf8"));
2042
2037
  } catch {
2043
2038
  return [];
2044
2039
  }
@@ -2133,15 +2128,15 @@ async function executeUploadFlow(input) {
2133
2128
  const diagnostics = [];
2134
2129
  const orderedFeatures = [...input.featurePaths].sort((a, b) => a.localeCompare(b));
2135
2130
  for (const featurePath of orderedFeatures) {
2136
- const absolutePath = path5.join(input.rootPath, featurePath);
2137
- if (!existsSync3(absolutePath)) {
2131
+ const absolutePath = import_node_path5.default.join(input.rootPath, featurePath);
2132
+ if (!(0, import_node_fs4.existsSync)(absolutePath)) {
2138
2133
  featureFailed += 1;
2139
2134
  const diagnostic = diagUploadFeatureFailure(featurePath, "missing feature file");
2140
2135
  errors.push(diagnostic.message);
2141
2136
  diagnostics.push(diagnostic);
2142
2137
  continue;
2143
2138
  }
2144
- const gherkin = readFileSync3(absolutePath, "utf8");
2139
+ const gherkin = (0, import_node_fs4.readFileSync)(absolutePath, "utf8");
2145
2140
  const name = deriveFeatureNameFromGherkin(gherkin, featurePath);
2146
2141
  const payload = {
2147
2142
  context: {
@@ -2480,7 +2475,7 @@ function createAutoHandler(deps = {}) {
2480
2475
  stderr: ["ERROR: --output must be either 'plain' or 'json'."]
2481
2476
  };
2482
2477
  }
2483
- if (!existsSync3(rootPath)) {
2478
+ if (!(0, import_node_fs4.existsSync)(rootPath)) {
2484
2479
  return {
2485
2480
  exitCode: ExitCode.ValidationError,
2486
2481
  stderr: [`ERROR: Root path does not exist: ${rootPath}`]
@@ -2586,9 +2581,9 @@ function createAutoHandler(deps = {}) {
2586
2581
  }
2587
2582
 
2588
2583
  // src/bdd.ts
2584
+ var import_node_fs5 = require("node:fs");
2585
+ var import_node_path6 = __toESM(require("node:path"), 1);
2589
2586
  var import_yazl = __toESM(require_yazl(), 1);
2590
- import { createWriteStream, mkdirSync, readFileSync as readFileSync4, readdirSync as readdirSync2, writeFileSync } from "node:fs";
2591
- import path6 from "node:path";
2592
2587
 
2593
2588
  // src/forgeClient.ts
2594
2589
  var ForgeClientError = class extends Error {
@@ -2891,7 +2886,7 @@ function parseScenarioFeatureFile(raw, filePath) {
2891
2886
  }
2892
2887
  const scenarioTag = tags.map((tag) => tag.match(SCENARIO_METADATA_PATTERN)).find((match) => Boolean(match));
2893
2888
  const scenarioKeyFromTag = scenarioTag?.[1]?.trim().toUpperCase() ?? "";
2894
- const fileKeyMatch = path6.basename(filePath ?? "").match(/^(SC-\d+)\.feature$/i);
2889
+ const fileKeyMatch = import_node_path6.default.basename(filePath ?? "").match(/^(SC-\d+)\.feature$/i);
2895
2890
  const scenarioKeyFromFile = fileKeyMatch?.[1]?.trim().toUpperCase() ?? "";
2896
2891
  const scenarioKey = scenarioKeyFromTag || scenarioKeyFromFile;
2897
2892
  if (scenarioKeyFromTag && scenarioKeyFromFile && scenarioKeyFromTag !== scenarioKeyFromFile) {
@@ -2976,7 +2971,7 @@ function toJsonExportManifestItems(items) {
2976
2971
  async function defaultCreateZipArchive(archivePath, entries) {
2977
2972
  await new Promise((resolve, reject) => {
2978
2973
  const zip = new import_yazl.ZipFile();
2979
- const output = zip.outputStream.pipe(createWriteStream(archivePath));
2974
+ const output = zip.outputStream.pipe((0, import_node_fs5.createWriteStream)(archivePath));
2980
2975
  output.on("close", () => resolve());
2981
2976
  output.on("error", reject);
2982
2977
  zip.outputStream.on("error", reject);
@@ -3006,10 +3001,10 @@ function missingProjectResponse() {
3006
3001
  function createBddHandler(deps = {}) {
3007
3002
  const cwd = deps.cwd ?? process.cwd();
3008
3003
  const env = deps.env ?? process.env;
3009
- const mkdir = deps.mkdir ?? ((targetPath, options) => mkdirSync(targetPath, options));
3010
- const readFile = deps.readFile ?? ((filePath) => readFileSync4(filePath, "utf8"));
3011
- const readDir = deps.readDir ?? ((dirPath) => readdirSync2(dirPath));
3012
- const writeFile = deps.writeFile ?? ((filePath, content) => writeFileSync(filePath, content, "utf8"));
3004
+ const mkdir = deps.mkdir ?? ((targetPath, options) => (0, import_node_fs5.mkdirSync)(targetPath, options));
3005
+ const readFile = deps.readFile ?? ((filePath) => (0, import_node_fs5.readFileSync)(filePath, "utf8"));
3006
+ const readDir = deps.readDir ?? ((dirPath) => (0, import_node_fs5.readdirSync)(dirPath));
3007
+ const writeFile = deps.writeFile ?? ((filePath, content) => (0, import_node_fs5.writeFileSync)(filePath, content, "utf8"));
3013
3008
  const createZipArchive = deps.createZipArchive ?? defaultCreateZipArchive;
3014
3009
  return async (request, context) => {
3015
3010
  const [subcommand, ...restArgs] = request.args;
@@ -3053,7 +3048,7 @@ function createBddHandler(deps = {}) {
3053
3048
  stderr: ["ERROR: Missing required --output-dir for testops bdd features export."]
3054
3049
  };
3055
3050
  }
3056
- const outputDir = path6.resolve(cwd, outputDirFlag);
3051
+ const outputDir = import_node_path6.default.resolve(cwd, outputDirFlag);
3057
3052
  try {
3058
3053
  const result = await context.invokeForgeContract("listBddFeatures", {
3059
3054
  context: {
@@ -3089,7 +3084,7 @@ function createBddHandler(deps = {}) {
3089
3084
  `
3090
3085
  }));
3091
3086
  for (let index = 0; index < features.length; index += 1) {
3092
- writeFile(path6.join(outputDir, fileNames[index]), exportEntries[index].content);
3087
+ writeFile(import_node_path6.default.join(outputDir, fileNames[index]), exportEntries[index].content);
3093
3088
  }
3094
3089
  const manifest = {
3095
3090
  action: "bdd-features-export",
@@ -3102,7 +3097,7 @@ function createBddHandler(deps = {}) {
3102
3097
  };
3103
3098
  const manifestContent = `${JSON.stringify(manifest, null, 2)}
3104
3099
  `;
3105
- writeFile(path6.join(outputDir, "manifest.json"), manifestContent);
3100
+ writeFile(import_node_path6.default.join(outputDir, "manifest.json"), manifestContent);
3106
3101
  const archivePath = `${outputDir}.zip`;
3107
3102
  if (zipRequested) {
3108
3103
  await createZipArchive(archivePath, [
@@ -3172,7 +3167,7 @@ function createBddHandler(deps = {}) {
3172
3167
  stderr: ["ERROR: Missing required --output-dir for testops bdd scenarios export."]
3173
3168
  };
3174
3169
  }
3175
- const outputDir = path6.resolve(cwd, outputDirFlag);
3170
+ const outputDir = import_node_path6.default.resolve(cwd, outputDirFlag);
3176
3171
  const zipRequested = parsed.boolFlags.has("--zip");
3177
3172
  try {
3178
3173
  const scenariosResult = await context.invokeForgeContract("listBddScenarios", {
@@ -3207,7 +3202,7 @@ function createBddHandler(deps = {}) {
3207
3202
  const fileName = scenarioToExportFileName(scenario);
3208
3203
  const fileContent = `${scenarioToFeatureLines(scenario).join("\n")}
3209
3204
  `;
3210
- writeFile(path6.join(outputDir, fileName), fileContent);
3205
+ writeFile(import_node_path6.default.join(outputDir, fileName), fileContent);
3211
3206
  return {
3212
3207
  scenario,
3213
3208
  fileName,
@@ -3233,7 +3228,7 @@ function createBddHandler(deps = {}) {
3233
3228
  };
3234
3229
  const manifestContent = `${JSON.stringify(manifest, null, 2)}
3235
3230
  `;
3236
- writeFile(path6.join(outputDir, "manifest.json"), manifestContent);
3231
+ writeFile(import_node_path6.default.join(outputDir, "manifest.json"), manifestContent);
3237
3232
  const archivePath = `${outputDir}.zip`;
3238
3233
  if (zipRequested) {
3239
3234
  await createZipArchive(archivePath, [
@@ -3281,8 +3276,8 @@ function createBddHandler(deps = {}) {
3281
3276
  }
3282
3277
  }
3283
3278
  if (nested === "import") {
3284
- const sourceFile = parsed.flags["--file"] ? path6.resolve(cwd, parsed.flags["--file"]) : "";
3285
- const inputDir = parsed.flags["--input-dir"] ? path6.resolve(cwd, parsed.flags["--input-dir"]) : "";
3279
+ const sourceFile = parsed.flags["--file"] ? import_node_path6.default.resolve(cwd, parsed.flags["--file"]) : "";
3280
+ const inputDir = parsed.flags["--input-dir"] ? import_node_path6.default.resolve(cwd, parsed.flags["--input-dir"]) : "";
3286
3281
  if (!sourceFile && !inputDir) {
3287
3282
  return {
3288
3283
  exitCode: ExitCode.ValidationError,
@@ -3290,7 +3285,7 @@ function createBddHandler(deps = {}) {
3290
3285
  };
3291
3286
  }
3292
3287
  try {
3293
- const scenarioFiles = sourceFile ? [sourceFile] : readDir(inputDir).filter((entry) => entry.toLowerCase().endsWith(".feature")).map((entry) => path6.join(inputDir, entry)).sort((left, right) => left.localeCompare(right));
3288
+ const scenarioFiles = sourceFile ? [sourceFile] : readDir(inputDir).filter((entry) => entry.toLowerCase().endsWith(".feature")).map((entry) => import_node_path6.default.join(inputDir, entry)).sort((left, right) => left.localeCompare(right));
3294
3289
  if (scenarioFiles.length === 0) {
3295
3290
  return {
3296
3291
  exitCode: ExitCode.ValidationError,
@@ -4177,8 +4172,8 @@ function createDoctorHandler(deps = {}) {
4177
4172
  }
4178
4173
 
4179
4174
  // src/ingestFeature.ts
4180
- import { readFileSync as readFileSync5 } from "node:fs";
4181
- import path7 from "node:path";
4175
+ var import_node_fs6 = require("node:fs");
4176
+ var import_node_path7 = __toESM(require("node:path"), 1);
4182
4177
  var CONFIG_FLAGS5 = /* @__PURE__ */ new Set([
4183
4178
  "--config",
4184
4179
  "--base-url",
@@ -4264,8 +4259,8 @@ function normalizeError3(error) {
4264
4259
  return "Unknown ingest error.";
4265
4260
  }
4266
4261
  function createIngestFeatureHandler(deps = {}) {
4267
- const readFile = deps.readFile ?? ((filePath) => readFileSync5(filePath, "utf8"));
4268
- const readStdin = deps.readStdin ?? (() => readFileSync5(0, "utf8"));
4262
+ const readFile = deps.readFile ?? ((filePath) => (0, import_node_fs6.readFileSync)(filePath, "utf8"));
4263
+ const readStdin = deps.readStdin ?? (() => (0, import_node_fs6.readFileSync)(0, "utf8"));
4269
4264
  const cwd = deps.cwd ?? process.cwd();
4270
4265
  const env = deps.env ?? process.env;
4271
4266
  return async (request, context) => {
@@ -4275,7 +4270,7 @@ function createIngestFeatureHandler(deps = {}) {
4275
4270
  const config = resolveCliConfig(configArgs, env, cwd);
4276
4271
  const projectKey = config.values.projectKey;
4277
4272
  const issueKey = config.values.issueKey;
4278
- const sourceFile = parsed.flags["--file"] ? path7.resolve(cwd, parsed.flags["--file"]) : "";
4273
+ const sourceFile = parsed.flags["--file"] ? import_node_path7.default.resolve(cwd, parsed.flags["--file"]) : "";
4279
4274
  const useStdin = parsed.boolFlags.has("--stdin");
4280
4275
  const useJson = parsed.boolFlags.has("--json");
4281
4276
  const sourceCount = Number(Boolean(sourceFile)) + Number(useStdin);
@@ -4404,8 +4399,8 @@ function createIngestFeatureHandler(deps = {}) {
4404
4399
  }
4405
4400
 
4406
4401
  // src/runUpload.ts
4407
- import { readFileSync as readFileSync6 } from "node:fs";
4408
- import path8 from "node:path";
4402
+ var import_node_fs7 = require("node:fs");
4403
+ var import_node_path8 = __toESM(require("node:path"), 1);
4409
4404
  var STEP_RESULTS = [
4410
4405
  StepResult.Passed,
4411
4406
  StepResult.Failed,
@@ -4546,8 +4541,8 @@ function summarizeRunResult(result) {
4546
4541
  return lines;
4547
4542
  }
4548
4543
  function createRunUploadHandler(deps = {}) {
4549
- const readFile = deps.readFile ?? ((filePath) => readFileSync6(filePath, "utf8"));
4550
- const readStdin = deps.readStdin ?? (() => readFileSync6(0, "utf8"));
4544
+ const readFile = deps.readFile ?? ((filePath) => (0, import_node_fs7.readFileSync)(filePath, "utf8"));
4545
+ const readStdin = deps.readStdin ?? (() => (0, import_node_fs7.readFileSync)(0, "utf8"));
4551
4546
  const cwd = deps.cwd ?? process.cwd();
4552
4547
  const env = deps.env ?? process.env;
4553
4548
  return async (request, context) => {
@@ -4558,7 +4553,7 @@ function createRunUploadHandler(deps = {}) {
4558
4553
  const projectKey = config.values.projectKey;
4559
4554
  const issueKey = config.values.issueKey;
4560
4555
  const testCaseKey = parsed.flags["--test-case-key"]?.trim().toUpperCase() ?? "";
4561
- const sourceFile = parsed.flags["--file"] ? path8.resolve(cwd, parsed.flags["--file"]) : "";
4556
+ const sourceFile = parsed.flags["--file"] ? import_node_path8.default.resolve(cwd, parsed.flags["--file"]) : "";
4562
4557
  const useStdin = parsed.boolFlags.has("--stdin");
4563
4558
  const useJson = parsed.boolFlags.has("--json");
4564
4559
  const sourceCount = Number(Boolean(sourceFile)) + Number(useStdin);
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@automatify-au/cli",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Forge-first CLI for Automatify Jira TestOps",
5
5
  "type": "module",
6
6
  "bin": {
7
- "automatify": "dist/automatify.js"
7
+ "automatify": "dist/automatify.cjs"
8
8
  },
9
9
  "files": [
10
- "dist/automatify.js"
10
+ "dist/automatify.cjs"
11
11
  ],
12
12
  "keywords": [
13
13
  "automatify",
@@ -41,7 +41,7 @@
41
41
  "prepublishOnly": "npm run test && npm run bundle",
42
42
  "pack": "npm pack",
43
43
  "dev": "tsx src/index.ts --help",
44
- "cli": "node dist/automatify.js",
44
+ "cli": "node dist/automatify.cjs",
45
45
  "cli:dev": "tsx src/index.ts",
46
46
  "lint": "echo 'no lint configured'",
47
47
  "format": "echo 'no format configured'",