@galaxy-tool-util/cli 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/bin/gxwf.js +43 -19
  2. package/dist/bin/gxwf.js.map +1 -1
  3. package/dist/commands/add.js +2 -2
  4. package/dist/commands/add.js.map +1 -1
  5. package/dist/commands/clean-tree.d.ts +3 -17
  6. package/dist/commands/clean-tree.d.ts.map +1 -1
  7. package/dist/commands/clean-tree.js +30 -29
  8. package/dist/commands/clean-tree.js.map +1 -1
  9. package/dist/commands/clean.d.ts +3 -0
  10. package/dist/commands/clean.d.ts.map +1 -1
  11. package/dist/commands/clean.js +12 -2
  12. package/dist/commands/clean.js.map +1 -1
  13. package/dist/commands/clear.js +4 -4
  14. package/dist/commands/clear.js.map +1 -1
  15. package/dist/commands/convert-tree.d.ts +2 -1
  16. package/dist/commands/convert-tree.d.ts.map +1 -1
  17. package/dist/commands/convert-tree.js +23 -7
  18. package/dist/commands/convert-tree.js.map +1 -1
  19. package/dist/commands/convert.d.ts +2 -1
  20. package/dist/commands/convert.d.ts.map +1 -1
  21. package/dist/commands/convert.js +36 -4
  22. package/dist/commands/convert.js.map +1 -1
  23. package/dist/commands/info.d.ts.map +1 -1
  24. package/dist/commands/info.js +5 -4
  25. package/dist/commands/info.js.map +1 -1
  26. package/dist/commands/lint-tree.d.ts +3 -19
  27. package/dist/commands/lint-tree.d.ts.map +1 -1
  28. package/dist/commands/lint-tree.js +46 -58
  29. package/dist/commands/lint-tree.js.map +1 -1
  30. package/dist/commands/lint.d.ts +8 -4
  31. package/dist/commands/lint.d.ts.map +1 -1
  32. package/dist/commands/lint.js +61 -13
  33. package/dist/commands/lint.js.map +1 -1
  34. package/dist/commands/list.js +3 -3
  35. package/dist/commands/list.js.map +1 -1
  36. package/dist/commands/populate-workflow.js +2 -2
  37. package/dist/commands/populate-workflow.js.map +1 -1
  38. package/dist/commands/render-results.d.ts +3 -3
  39. package/dist/commands/render-results.d.ts.map +1 -1
  40. package/dist/commands/render-results.js +8 -4
  41. package/dist/commands/render-results.js.map +1 -1
  42. package/dist/commands/report-output.d.ts +34 -0
  43. package/dist/commands/report-output.d.ts.map +1 -0
  44. package/dist/commands/report-output.js +70 -0
  45. package/dist/commands/report-output.js.map +1 -0
  46. package/dist/commands/resolve-tool.js +1 -1
  47. package/dist/commands/resolve-tool.js.map +1 -1
  48. package/dist/commands/roundtrip-tree.d.ts +3 -1
  49. package/dist/commands/roundtrip-tree.d.ts.map +1 -1
  50. package/dist/commands/roundtrip-tree.js +67 -5
  51. package/dist/commands/roundtrip-tree.js.map +1 -1
  52. package/dist/commands/roundtrip.d.ts +2 -1
  53. package/dist/commands/roundtrip.d.ts.map +1 -1
  54. package/dist/commands/roundtrip.js +30 -8
  55. package/dist/commands/roundtrip.js.map +1 -1
  56. package/dist/commands/schema.js +2 -2
  57. package/dist/commands/schema.js.map +1 -1
  58. package/dist/commands/strict-options.d.ts +22 -0
  59. package/dist/commands/strict-options.d.ts.map +1 -0
  60. package/dist/commands/strict-options.js +18 -0
  61. package/dist/commands/strict-options.js.map +1 -0
  62. package/dist/commands/validate-tests-tree.d.ts +36 -0
  63. package/dist/commands/validate-tests-tree.d.ts.map +1 -0
  64. package/dist/commands/validate-tests-tree.js +191 -0
  65. package/dist/commands/validate-tests-tree.js.map +1 -0
  66. package/dist/commands/validate-tests.d.ts +21 -0
  67. package/dist/commands/validate-tests.d.ts.map +1 -0
  68. package/dist/commands/validate-tests.js +83 -0
  69. package/dist/commands/validate-tests.js.map +1 -0
  70. package/dist/commands/validate-tree.d.ts +3 -20
  71. package/dist/commands/validate-tree.d.ts.map +1 -1
  72. package/dist/commands/validate-tree.js +53 -47
  73. package/dist/commands/validate-tree.js.map +1 -1
  74. package/dist/commands/validate-workflow-json-schema.d.ts +8 -2
  75. package/dist/commands/validate-workflow-json-schema.d.ts.map +1 -1
  76. package/dist/commands/validate-workflow-json-schema.js +104 -58
  77. package/dist/commands/validate-workflow-json-schema.js.map +1 -1
  78. package/dist/commands/validate-workflow.d.ts +17 -10
  79. package/dist/commands/validate-workflow.d.ts.map +1 -1
  80. package/dist/commands/validate-workflow.js +185 -59
  81. package/dist/commands/validate-workflow.js.map +1 -1
  82. package/dist/commands/workflow-io.d.ts +2 -11
  83. package/dist/commands/workflow-io.d.ts.map +1 -1
  84. package/dist/commands/workflow-io.js +7 -16
  85. package/dist/commands/workflow-io.js.map +1 -1
  86. package/dist/index.d.ts +15 -0
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +12 -0
  89. package/dist/index.js.map +1 -1
  90. package/dist/workflow/_templates-bundled.d.ts +2 -0
  91. package/dist/workflow/_templates-bundled.d.ts.map +1 -0
  92. package/dist/workflow/_templates-bundled.js +324 -0
  93. package/dist/workflow/_templates-bundled.js.map +1 -0
  94. package/dist/workflow/report-templates.d.ts +13 -0
  95. package/dist/workflow/report-templates.d.ts.map +1 -0
  96. package/dist/workflow/report-templates.js +91 -0
  97. package/dist/workflow/report-templates.js.map +1 -0
  98. package/package.json +7 -5
@@ -1 +1 @@
1
- {"version":3,"file":"populate-workflow.js","sourceRoot":"","sources":["../../src/commands/populate-workflow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,IAA6B;IAE7B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAqB;QACtC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,CAAC;KACvD,CAAC;IAEF,IAAI,KAAyB,CAAC;IAC9B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3D,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5D,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;QAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAEzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QACxE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7F,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"populate-workflow.js","sourceRoot":"","sources":["../../src/commands/populate-workflow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EACL,cAAc,EACd,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,IAA6B;IAE7B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAqB;QACtC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,CAAC;KACvD,CAAC;IAEF,IAAI,KAAyB,CAAC;IAC9B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3D,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5D,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,uBAAuB,CAAC;QACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAEzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QACxE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,IAAI,KAAK,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7F,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Shared rendering for StepValidationResult arrays.
2
+ * Shared rendering for ValidationStepResult arrays.
3
3
  */
4
- import type { StepValidationResult } from "./validate-workflow.js";
4
+ import { type ValidationStepResult } from "@galaxy-tool-util/schema";
5
5
  export interface RenderSummary {
6
6
  validated: number;
7
7
  skipped: number;
8
8
  }
9
9
  /** Render step validation results to console, returning counts. */
10
- export declare function renderStepResults(results: StepValidationResult[]): RenderSummary;
10
+ export declare function renderStepResults(results: ValidationStepResult[]): RenderSummary;
11
11
  //# sourceMappingURL=render-results.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-results.d.ts","sourceRoot":"","sources":["../../src/commands/render-results.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,aAAa,CAiBhF"}
1
+ {"version":3,"file":"render-results.d.ts","sourceRoot":"","sources":["../../src/commands/render-results.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,aAAa,CAiBhF"}
@@ -1,21 +1,25 @@
1
+ /**
2
+ * Shared rendering for ValidationStepResult arrays.
3
+ */
4
+ import { SKIP_STATUSES } from "@galaxy-tool-util/schema";
1
5
  /** Render step validation results to console, returning counts. */
2
6
  export function renderStepResults(results) {
3
7
  let validated = 0;
4
8
  let skipped = 0;
5
9
  for (const r of results) {
6
- if (r.status === "skip") {
10
+ if (SKIP_STATUSES.has(r.status)) {
7
11
  skipped++;
8
- console.warn(` [${r.stepLabel}] skipped — ${r.errors[0] ?? "unknown"}`);
12
+ console.warn(` [${r.step}] skipped — ${r.errors[0] ?? "unknown"}`);
9
13
  }
10
14
  else if (r.status === "fail") {
11
15
  validated++;
12
- console.error(` [${r.stepLabel}] tool_state errors (${r.toolId}):`);
16
+ console.error(` [${r.step}] tool_state errors (${r.tool_id}):`);
13
17
  for (const line of r.errors)
14
18
  console.error(` ${line}`);
15
19
  }
16
20
  else {
17
21
  validated++;
18
- console.log(` [${r.stepLabel}] tool_state: OK`);
22
+ console.log(` [${r.step}] tool_state: OK`);
19
23
  }
20
24
  }
21
25
  return { validated, skipped };
@@ -1 +1 @@
1
- {"version":3,"file":"render-results.js","sourceRoot":"","sources":["../../src/commands/render-results.ts"],"names":[],"mappings":"AAUA,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,OAA+B;IAC/D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/B,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,wBAAwB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YACrE,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"render-results.js","sourceRoot":"","sources":["../../src/commands/render-results.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAA6B,MAAM,0BAA0B,CAAC;AAOpF,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,OAA+B;IAC/D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/B,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;YACjE,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,34 @@
1
+ export type ReportType = "validate" | "lint" | "clean" | "validate-tree" | "lint-tree" | "clean-tree" | "roundtrip-tree";
2
+ export interface ReportOutputOptions {
3
+ /**
4
+ * Path to write Markdown report to. Commander sets this to `true` (boolean)
5
+ * when `--report-markdown` is passed without a filename — treat as stdout.
6
+ * Use `"-"` explicitly to write to stdout.
7
+ */
8
+ reportMarkdown?: string | boolean;
9
+ /** Same semantics as reportMarkdown but for HTML output. */
10
+ reportHtml?: string | boolean;
11
+ }
12
+ /**
13
+ * Render and write report output if --report-markdown / --report-html flags
14
+ * were passed. Both can be specified simultaneously.
15
+ *
16
+ * @param templateName - e.g. "validate_tree.md.j2"
17
+ * @param report - the tree report object
18
+ * @param opts - parsed CLI options
19
+ */
20
+ export declare function writeReportOutput(templateName: string, report: unknown, opts: ReportOutputOptions): Promise<void>;
21
+ /**
22
+ * Generate a standalone HTML page that loads the gxwf-report-shell IIFE
23
+ * bundle from CDN and renders the given report data.
24
+ *
25
+ * The resulting HTML is self-contained (aside from the CDN network request).
26
+ * Use this for --report-html on single-workflow and tree commands.
27
+ */
28
+ export declare function buildReportHtml(type: ReportType, data: unknown, title?: string): string;
29
+ /**
30
+ * Write an HTML report to the given destination if set.
31
+ * dest follows the same string | boolean convention as reportHtml/reportMarkdown.
32
+ */
33
+ export declare function writeReportHtml(type: ReportType, data: unknown, dest: string | boolean | undefined, title?: string): Promise<void>;
34
+ //# sourceMappingURL=report-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-output.d.ts","sourceRoot":"","sources":["../../src/commands/report-output.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,MAAM,GACN,OAAO,GACP,eAAe,GACf,WAAW,GACX,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,SAAgB,GAAG,MAAM,CAgB9F;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,EAClC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Helpers for writing Markdown/HTML rendered reports from CLI commands.
3
+ */
4
+ import { writeFile } from "node:fs/promises";
5
+ import { renderReport } from "../workflow/report-templates.js";
6
+ // Pin to a specific published gxwf-report-shell version.
7
+ // Bump when a new shell version with user-visible changes is released to npm.
8
+ const SHELL_CDN_VERSION = "0.1.0";
9
+ const SHELL_CDN_BASE = `https://cdn.jsdelivr.net/npm/@galaxy-tool-util/gxwf-report-shell@${SHELL_CDN_VERSION}/dist`;
10
+ /**
11
+ * Render and write report output if --report-markdown / --report-html flags
12
+ * were passed. Both can be specified simultaneously.
13
+ *
14
+ * @param templateName - e.g. "validate_tree.md.j2"
15
+ * @param report - the tree report object
16
+ * @param opts - parsed CLI options
17
+ */
18
+ export async function writeReportOutput(templateName, report, opts) {
19
+ const dest = opts.reportMarkdown;
20
+ if (!dest)
21
+ return;
22
+ const content = await renderReport(templateName, report);
23
+ // Commander sets dest = true when flag is passed without a filename argument
24
+ if (dest === true || dest === "-") {
25
+ process.stdout.write(content);
26
+ }
27
+ else {
28
+ await writeFile(dest, content, "utf-8");
29
+ }
30
+ }
31
+ /**
32
+ * Generate a standalone HTML page that loads the gxwf-report-shell IIFE
33
+ * bundle from CDN and renders the given report data.
34
+ *
35
+ * The resulting HTML is self-contained (aside from the CDN network request).
36
+ * Use this for --report-html on single-workflow and tree commands.
37
+ */
38
+ export function buildReportHtml(type, data, title = "gxwf Report") {
39
+ const payload = JSON.stringify({ type, data });
40
+ return `<!DOCTYPE html>
41
+ <html lang="en">
42
+ <head>
43
+ <meta charset="UTF-8">
44
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
45
+ <title>${title}</title>
46
+ <link rel="stylesheet" href="${SHELL_CDN_BASE}/shell.css">
47
+ </head>
48
+ <body>
49
+ <div id="gxwf-report"></div>
50
+ <script>window.__GXWF_REPORT__ = ${payload};</script>
51
+ <script src="${SHELL_CDN_BASE}/shell.iife.js"></script>
52
+ </body>
53
+ </html>`;
54
+ }
55
+ /**
56
+ * Write an HTML report to the given destination if set.
57
+ * dest follows the same string | boolean convention as reportHtml/reportMarkdown.
58
+ */
59
+ export async function writeReportHtml(type, data, dest, title) {
60
+ if (!dest)
61
+ return;
62
+ const content = buildReportHtml(type, data, title);
63
+ if (dest === true || dest === "-") {
64
+ process.stdout.write(content);
65
+ }
66
+ else {
67
+ await writeFile(dest, content, "utf-8");
68
+ }
69
+ }
70
+ //# sourceMappingURL=report-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-output.js","sourceRoot":"","sources":["../../src/commands/report-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,yDAAyD;AACzD,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAClC,MAAM,cAAc,GAAG,oEAAoE,iBAAiB,OAAO,CAAC;AAsBpH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,YAAoB,EACpB,MAAe,EACf,IAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzD,6EAA6E;IAC7E,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB,EAAE,IAAa,EAAE,KAAK,GAAG,aAAa;IACpF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,OAAO;;;;;WAKE,KAAK;iCACiB,cAAc;;;;qCAIV,OAAO;iBAC3B,cAAc;;QAEvB,CAAC;AACT,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAgB,EAChB,IAAa,EACb,IAAkC,EAClC,KAAc;IAEd,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,CAAC,IAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
@@ -7,7 +7,7 @@ export async function loadCachedTool(cache, toolId, version) {
7
7
  if (coords.version === null) {
8
8
  return { kind: "no_version", toolId };
9
9
  }
10
- const key = cacheKey(coords.toolshedUrl, coords.trsToolId, coords.version);
10
+ const key = await cacheKey(coords.toolshedUrl, coords.trsToolId, coords.version);
11
11
  const tool = await cache.loadCached(key);
12
12
  if (tool === null) {
13
13
  return { kind: "not_cached", toolId, key };
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-tool.js","sourceRoot":"","sources":["../../src/commands/resolve-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAmB,MAAM,wBAAwB,CAAC;AAWnF,MAAM,UAAU,cAAc,CAAC,CAA8B;IAC3D,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAgB,EAChB,MAAc,EACd,OAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"resolve-tool.js","sourceRoot":"","sources":["../../src/commands/resolve-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAmB,MAAM,wBAAwB,CAAC;AAWnF,MAAM,UAAU,cAAc,CAAC,CAA8B;IAC3D,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAgB,EAChB,MAAc,EACd,OAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC"}
@@ -1,4 +1,6 @@
1
- export interface RoundtripTreeOptions {
1
+ import { type StrictOptions } from "./strict-options.js";
2
+ import { type ReportOutputOptions } from "./report-output.js";
3
+ export interface RoundtripTreeOptions extends StrictOptions, ReportOutputOptions {
2
4
  cacheDir?: string;
3
5
  format?: string;
4
6
  json?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"roundtrip-tree.d.ts","sourceRoot":"","sources":["../../src/commands/roundtrip-tree.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoH7F"}
1
+ {"version":3,"file":"roundtrip-tree.d.ts","sourceRoot":"","sources":["../../src/commands/roundtrip-tree.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAI/E,OAAO,EAAsC,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAElG,MAAM,WAAW,oBAAqB,SAAQ,aAAa,EAAE,mBAAmB;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4I7F"}
@@ -2,20 +2,23 @@
2
2
  * `gxwf roundtrip-tree` — batch roundtrip validation across a directory.
3
3
  * Mirrors the patterns in convert-tree.ts.
4
4
  */
5
- import { ToolCache } from "@galaxy-tool-util/core";
6
- import { roundtripValidate, } from "@galaxy-tool-util/schema";
5
+ import { makeNodeToolCache } from "@galaxy-tool-util/core/node";
6
+ import { roundtripValidate, buildRoundTripTreeReport, categoryOf, } from "@galaxy-tool-util/schema";
7
7
  import { dirname, join } from "node:path";
8
8
  import { loadToolInputsForWorkflow } from "./stateful-tool-inputs.js";
9
9
  import { createDefaultResolver } from "./url-resolver.js";
10
+ import { resolveStrictOptions } from "./strict-options.js";
10
11
  import { resolveFormat } from "./workflow-io.js";
11
12
  import { collectTree, skipWorkflow } from "./tree.js";
12
13
  import { countDiffs } from "./roundtrip.js";
14
+ import { writeReportOutput, writeReportHtml } from "./report-output.js";
13
15
  export async function runRoundtripTree(dir, opts) {
14
- const cache = new ToolCache({ cacheDir: opts.cacheDir });
16
+ const cache = makeNodeToolCache({ cacheDir: opts.cacheDir });
15
17
  await cache.index.load();
16
- if (cache.index.listAll().length === 0) {
18
+ if ((await cache.index.listAll()).length === 0) {
17
19
  console.warn("Tool cache is empty — all steps will fall back (no roundtrip possible)");
18
20
  }
21
+ const strict = resolveStrictOptions(opts);
19
22
  // Only native workflows are eligible; format2 files are skipped.
20
23
  const treeResult = await collectTree(dir, async (info, data) => {
21
24
  const sourceFormat = resolveFormat(data, opts.format);
@@ -29,7 +32,15 @@ export async function runRoundtripTree(dir, opts) {
29
32
  };
30
33
  const { resolver, status: toolStatus } = await loadToolInputsForWorkflow(data, "native", cache, expansionOpts);
31
34
  const failedLoads = toolStatus.filter((s) => !s.loaded);
32
- const result = roundtripValidate(data, resolver);
35
+ const result = roundtripValidate(data, resolver, {
36
+ strictEncoding: strict.strictEncoding,
37
+ strictStructure: strict.strictStructure,
38
+ strictState: strict.strictState,
39
+ });
40
+ if (result.encodingErrors.length > 0 || result.structureErrors.length > 0) {
41
+ const allErrors = [...result.encodingErrors, ...result.structureErrors];
42
+ throw new Error(`Strict: ${allErrors.join("; ")}`);
43
+ }
33
44
  return {
34
45
  relativePath: info.relativePath,
35
46
  result,
@@ -57,6 +68,20 @@ export async function runRoundtripTree(dir, opts) {
57
68
  else
58
69
  filesBenignOnly++;
59
70
  }
71
+ // Build RoundTripTreeReport for Markdown/HTML rendering
72
+ const roundtripWorkflows = treeResult.outcomes.map((o) => {
73
+ const relPath = o.info.relativePath;
74
+ if (o.error)
75
+ return makeRoundTripResult(relPath, null, o.error, null);
76
+ if (o.skipped)
77
+ return makeRoundTripResult(relPath, null, null, "legacy_encoding");
78
+ return makeRoundTripResult(relPath, o.result.result, null, null);
79
+ });
80
+ const roundtripReport = buildRoundTripTreeReport(treeResult.root, roundtripWorkflows);
81
+ await writeReportOutput("roundtrip_tree.md.j2", roundtripReport, {
82
+ reportMarkdown: opts.reportMarkdown,
83
+ });
84
+ await writeReportHtml("roundtrip-tree", roundtripReport, opts.reportHtml);
60
85
  if (opts.json) {
61
86
  console.log(JSON.stringify({
62
87
  root: treeResult.root,
@@ -113,4 +138,41 @@ export async function runRoundtripTree(dir, opts) {
113
138
  else
114
139
  process.exitCode = 0;
115
140
  }
141
+ /** Map the TS-internal RoundtripResult to the report-model shape for template rendering. */
142
+ function makeRoundTripResult(relPath, result, error, skippedReason) {
143
+ const allDiffs = result?.stepResults.flatMap((s) => s.diffs) ?? [];
144
+ const errorDiffs = allDiffs.filter((d) => d.severity === "error");
145
+ const benignDiffs = allDiffs.filter((d) => d.severity === "benign");
146
+ const ok = result ? result.success : false;
147
+ let status;
148
+ if (error)
149
+ status = "error";
150
+ else if (skippedReason)
151
+ status = "skipped";
152
+ else if (ok)
153
+ status = "ok";
154
+ else
155
+ status = "roundtrip_mismatch";
156
+ const conversionFailureLines = result?.stepResults
157
+ .filter((s) => !s.success)
158
+ .map((s) => s.error ?? `Step ${s.stepId} failed`) ?? [];
159
+ return {
160
+ workflow_path: relPath,
161
+ category: categoryOf(relPath),
162
+ conversion_result: null,
163
+ diffs: allDiffs,
164
+ step_id_mapping: null,
165
+ stale_clean_results: null,
166
+ error,
167
+ skipped_reason: skippedReason,
168
+ structure_errors: result?.structureErrors ?? [],
169
+ encoding_errors: result?.encodingErrors ?? [],
170
+ error_diffs: errorDiffs,
171
+ benign_diffs: benignDiffs,
172
+ ok,
173
+ status,
174
+ conversion_failure_lines: conversionFailureLines,
175
+ summary_line: status.toUpperCase(),
176
+ };
177
+ }
116
178
  //# sourceMappingURL=roundtrip-tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"roundtrip-tree.js","sourceRoot":"","sources":["../../src/commands/roundtrip-tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAuB,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAoB5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAA0B;IAC5E,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACzF,CAAC;IAED,iEAAiE;IACjE,MAAM,UAAU,GAAG,MAAM,WAAW,CAClC,GAAG,EACH,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,YAAY,CAAC,0BAA0B,YAAY,GAAG,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,aAAa,GAAqB;YACtC,QAAQ,EAAE,qBAAqB,CAAC;gBAC9B,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aACzD,CAAC;SACH,CAAC;QACF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,yBAAyB,CACtE,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,aAAa,CACd,CAAC;QACF,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjD,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM;YACN,cAAc,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC;IACJ,CAAC,EACD,KAAK,CACN,CAAC;IAEF,YAAY;IACZ,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,WAAW,GAAkB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,SAAS;QAChD,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;QAC7B,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;YAAE,WAAW,EAAE,CAAC;aACvC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;YAAE,UAAU,EAAE,CAAC;;YACxC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;gBACP,KAAK,EAAE,WAAW,CAAC,MAAM;gBACzB,KAAK,EAAE,UAAU;gBACjB,UAAU,EAAE,eAAe;gBAC3B,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,WAAW;aACxB;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACZ,uDAAuD;oBACvD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;wBACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAChE,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,CAAC,OAAO;oBAAE,SAAS;gBACxB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC;gBACpB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC;gBAErC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACzC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC9D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,YAAY,KAAK,MAAM,KAAK,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,MAAM,sBAAsB,CAC5G,CAAC;gBACF,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;oBACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;wBACjC,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrD,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CACT,cAAc,WAAW,CAAC,MAAM,aAAa,UAAU,WAAW,eAAe,iBAAiB,WAAW,SAAS,CACvH,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,YAAY,WAAW,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,gEAAgE;IAChE,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;SACxD,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"roundtrip-tree.js","sourceRoot":"","sources":["../../src/commands/roundtrip-tree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,iBAAiB,EAIjB,wBAAwB,EACxB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAuB,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAsB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAA4B,MAAM,oBAAoB,CAAC;AAoBlG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAA0B;IAC5E,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE1C,iEAAiE;IACjE,MAAM,UAAU,GAAG,MAAM,WAAW,CAClC,GAAG,EACH,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtD,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,YAAY,CAAC,0BAA0B,YAAY,GAAG,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,aAAa,GAAqB;YACtC,QAAQ,EAAE,qBAAqB,CAAC;gBAC9B,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aACzD,CAAC;SACH,CAAC;QACF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,yBAAyB,CACtE,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,aAAa,CACd,CAAC;QACF,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE;YAC/C,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM;YACN,cAAc,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC;IACJ,CAAC,EACD,KAAK,CACN,CAAC;IAEF,YAAY;IACZ,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,WAAW,GAAkB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,SAAS;QAChD,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;QAC7B,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;YAAE,WAAW,EAAE,CAAC;aACvC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;YAAE,UAAU,EAAE,CAAC;;YACxC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,wDAAwD;IACxD,MAAM,kBAAkB,GAAgC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpF,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QACpC,IAAI,CAAC,CAAC,KAAK;YAAE,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAClF,OAAO,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,MAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,wBAAwB,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACtF,MAAM,iBAAiB,CAAC,sBAAsB,EAAE,eAAe,EAAE;QAC/D,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IACH,MAAM,eAAe,CAAC,gBAAgB,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAE1E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE;gBACP,KAAK,EAAE,WAAW,CAAC,MAAM;gBACzB,KAAK,EAAE,UAAU;gBACjB,UAAU,EAAE,eAAe;gBAC3B,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,WAAW;aACxB;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACZ,uDAAuD;oBACvD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;wBACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;oBAChE,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,CAAC,OAAO;oBAAE,SAAS;gBACxB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC;gBACpB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC;gBAErC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACzC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC9D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,YAAY,KAAK,MAAM,KAAK,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,MAAM,sBAAsB,CAC5G,CAAC;gBACF,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;oBACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;wBACjC,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrD,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CACT,cAAc,WAAW,CAAC,MAAM,aAAa,UAAU,WAAW,eAAe,iBAAiB,WAAW,SAAS,CACvH,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,UAAU,WAAW,YAAY,WAAW,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,gEAAgE;IAChE,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;SACxD,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,4FAA4F;AAC5F,SAAS,mBAAmB,CAC1B,OAAe,EACf,MAA8B,EAC9B,KAAoB,EACpB,aAAuC;IAEvC,MAAM,QAAQ,GAAG,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACnE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACpE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,IAAI,MAAc,CAAC;IACnB,IAAI,KAAK;QAAE,MAAM,GAAG,OAAO,CAAC;SACvB,IAAI,aAAa;QAAE,MAAM,GAAG,SAAS,CAAC;SACtC,IAAI,EAAE;QAAE,MAAM,GAAG,IAAI,CAAC;;QACtB,MAAM,GAAG,oBAAoB,CAAC;IACnC,MAAM,sBAAsB,GAC1B,MAAM,EAAE,WAAW;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO;QACL,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC;QAC7B,iBAAiB,EAAE,IAAI;QACvB,KAAK,EAAE,QAAQ;QACf,eAAe,EAAE,IAAI;QACrB,mBAAmB,EAAE,IAAI;QACzB,KAAK;QACL,cAAc,EAAE,aAAa;QAC7B,gBAAgB,EAAE,MAAM,EAAE,eAAe,IAAI,EAAE;QAC/C,eAAe,EAAE,MAAM,EAAE,cAAc,IAAI,EAAE;QAC7C,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,WAAW;QACzB,EAAE;QACF,MAAM;QACN,wBAAwB,EAAE,sBAAsB;QAChD,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE;KACnC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { type RoundtripResult } from "@galaxy-tool-util/schema";
2
- export interface RoundtripOptions {
2
+ import { type StrictOptions } from "./strict-options.js";
3
+ export interface RoundtripOptions extends StrictOptions {
3
4
  cacheDir?: string;
4
5
  format?: string;
5
6
  json?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"roundtrip.d.ts","sourceRoot":"","sources":["../../src/commands/roundtrip.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAMlC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C1F;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAmED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAI3D;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAOA"}
1
+ {"version":3,"file":"roundtrip.d.ts","sourceRoot":"","sources":["../../src/commands/roundtrip.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG/E,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE1F;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAmED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAI3D;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAOA"}
@@ -7,26 +7,28 @@
7
7
  * 1 benign diffs only (type coercions, stale keys, connection moves)
8
8
  * 2 real diffs or conversion errors
9
9
  */
10
- import { ToolCache } from "@galaxy-tool-util/core";
10
+ import { makeNodeToolCache } from "@galaxy-tool-util/core/node";
11
11
  import { roundtripValidate, } from "@galaxy-tool-util/schema";
12
12
  import { dirname } from "node:path";
13
13
  import { loadToolInputsForWorkflow } from "./stateful-tool-inputs.js";
14
14
  import { createDefaultResolver } from "./url-resolver.js";
15
+ import { resolveStrictOptions } from "./strict-options.js";
15
16
  import { readWorkflowFile, resolveFormat } from "./workflow-io.js";
16
17
  export async function runRoundtrip(filePath, opts) {
17
18
  const data = await readWorkflowFile(filePath);
18
19
  if (!data)
19
20
  return;
20
21
  const sourceFormat = resolveFormat(data, opts.format);
22
+ const strict = resolveStrictOptions(opts);
21
23
  if (sourceFormat !== "native") {
22
24
  console.error(`Roundtrip source must be a native (.ga) workflow; got ${sourceFormat}.` +
23
25
  ` Convert to native first or pass a .ga file.`);
24
26
  process.exitCode = 2;
25
27
  return;
26
28
  }
27
- const cache = new ToolCache({ cacheDir: opts.cacheDir });
29
+ const cache = makeNodeToolCache({ cacheDir: opts.cacheDir });
28
30
  await cache.index.load();
29
- if (cache.index.listAll().length === 0) {
31
+ if ((await cache.index.listAll()).length === 0) {
30
32
  console.warn("Tool cache is empty — all steps will fall back (no roundtrip possible)");
31
33
  }
32
34
  const expansionOpts = {
@@ -39,14 +41,34 @@ export async function runRoundtrip(filePath, opts) {
39
41
  console.error(` tool ${s.toolId}${ver}: ${s.error}`);
40
42
  }
41
43
  }
42
- const result = roundtripValidate(data, resolver);
44
+ const result = roundtripValidate(data, resolver, {
45
+ strictEncoding: strict.strictEncoding,
46
+ strictStructure: strict.strictStructure,
47
+ strictState: strict.strictState,
48
+ });
43
49
  if (opts.json) {
44
50
  console.log(JSON.stringify(result, null, 2));
45
51
  }
46
52
  else {
53
+ // Report strict errors before step-level results
54
+ if (result.encodingErrors.length > 0) {
55
+ console.error("Encoding errors:");
56
+ for (const e of result.encodingErrors)
57
+ console.error(` ${e}`);
58
+ }
59
+ if (result.structureErrors.length > 0) {
60
+ console.error("Structure errors (strict):");
61
+ for (const e of result.structureErrors)
62
+ console.error(` ${e}`);
63
+ }
47
64
  reportResult(filePath, result, opts);
48
65
  }
49
- process.exitCode = exitCodeFor(result);
66
+ let exitCode = exitCodeFor(result);
67
+ // --strict-state: require all steps to roundtrip (no skips/failures)
68
+ if (strict.strictState && result.stepResults.some((s) => !s.success)) {
69
+ exitCode = 2;
70
+ }
71
+ process.exitCode = exitCode;
50
72
  }
51
73
  function reportResult(filePath, result, filter) {
52
74
  const total = result.stepResults.length;
@@ -93,9 +115,9 @@ function reportResult(filePath, result, filter) {
93
115
  ? step.diffs.filter((d) => d.severity === "benign")
94
116
  : step.diffs;
95
117
  for (const d of diffsToShow) {
96
- const tag = d.severity === "error" ? "ERROR" : `benign:${d.kind ?? "?"}`;
97
- const loc = d.path || "<root>";
98
- console.log(`${indent} [${tag}] ${loc}: ${d.message}`);
118
+ const tag = d.severity === "error" ? "ERROR" : `benign:${d.benign_artifact?.reason ?? "?"}`;
119
+ const loc = d.key_path || "<root>";
120
+ console.log(`${indent} [${tag}] ${loc}: ${d.description}`);
99
121
  }
100
122
  }
101
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"roundtrip.js","sourceRoot":"","sources":["../../src/commands/roundtrip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roundtrip.js","sourceRoot":"","sources":["../../src/commands/roundtrip.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ToolCache } from "@galaxy-tool-util/core";
1
+ import { makeNodeToolCache } from "@galaxy-tool-util/core/node";
2
2
  import { createFieldModel, STATE_REPRESENTATIONS, } from "@galaxy-tool-util/schema";
3
3
  import * as JSONSchema from "effect/JSONSchema";
4
4
  import { writeFile } from "node:fs/promises";
@@ -11,7 +11,7 @@ export async function runSchema(toolId, opts) {
11
11
  return;
12
12
  }
13
13
  const stateRep = repName;
14
- const cache = new ToolCache({ cacheDir: opts.cacheDir });
14
+ const cache = makeNodeToolCache({ cacheDir: opts.cacheDir });
15
15
  await cache.index.load();
16
16
  const result = await loadCachedTool(cache, toolId, opts.version);
17
17
  if (isResolveError(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASnE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,IAAmB;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,IAAI,eAAe,CAAC;IACvD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAA8B,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,KAAK,CACX,2BAA2B,OAAO,gBAAgB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,OAA8B,CAAC;IAEhD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,sCAAsC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAA6B;QACvC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAgD;KACzE,CAAC;IAEF,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAA+B,CAAC,CAAC;IAC/E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC3F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASnE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,IAAmB;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,IAAI,eAAe,CAAC;IACvD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAA8B,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,KAAK,CACX,2BAA2B,OAAO,gBAAgB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,OAA8B,CAAC;IAEhD,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,sCAAsC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAA6B;QACvC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAgD;KACzE,CAAC;IAEF,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAA+B,CAAC,CAAC;IAC/E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC3F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Strict validation options — decomposed into three orthogonal dimensions.
3
+ *
4
+ * --strict is shorthand for --strict-structure --strict-encoding --strict-state.
5
+ */
6
+ import type { Command } from "commander";
7
+ export interface StrictOptions {
8
+ strict?: boolean;
9
+ strictStructure?: boolean;
10
+ strictEncoding?: boolean;
11
+ strictState?: boolean;
12
+ }
13
+ export interface ResolvedStrictOptions {
14
+ strictStructure: boolean;
15
+ strictEncoding: boolean;
16
+ strictState: boolean;
17
+ }
18
+ /** Expand --strict shorthand into the three individual flags. */
19
+ export declare function resolveStrictOptions(opts: StrictOptions): ResolvedStrictOptions;
20
+ /** Register --strict, --strict-structure, --strict-encoding, --strict-state on a Commander command. */
21
+ export declare function addStrictOptions(cmd: Command): Command;
22
+ //# sourceMappingURL=strict-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-options.d.ts","sourceRoot":"","sources":["../../src/commands/strict-options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,qBAAqB,CAO/E;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMtD"}
@@ -0,0 +1,18 @@
1
+ /** Expand --strict shorthand into the three individual flags. */
2
+ export function resolveStrictOptions(opts) {
3
+ const all = !!opts.strict;
4
+ return {
5
+ strictStructure: all || !!opts.strictStructure,
6
+ strictEncoding: all || !!opts.strictEncoding,
7
+ strictState: all || !!opts.strictState,
8
+ };
9
+ }
10
+ /** Register --strict, --strict-structure, --strict-encoding, --strict-state on a Commander command. */
11
+ export function addStrictOptions(cmd) {
12
+ return cmd
13
+ .option("--strict", "Shorthand for --strict-structure --strict-encoding --strict-state")
14
+ .option("--strict-structure", "Reject unknown keys at envelope/step level")
15
+ .option("--strict-encoding", "Reject JSON-string tool_state and format2 field misuse")
16
+ .option("--strict-state", "Require every tool step to validate; no skips allowed");
17
+ }
18
+ //# sourceMappingURL=strict-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-options.js","sourceRoot":"","sources":["../../src/commands/strict-options.ts"],"names":[],"mappings":"AAoBA,iEAAiE;AACjE,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,OAAO;QACL,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe;QAC9C,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc;QAC5C,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW;KACvC,CAAC;AACJ,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,GAAG;SACP,MAAM,CAAC,UAAU,EAAE,mEAAmE,CAAC;SACvF,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;SAC1E,MAAM,CAAC,mBAAmB,EAAE,wDAAwD,CAAC;SACrF,MAAM,CAAC,gBAAgB,EAAE,uDAAuD,CAAC,CAAC;AACvF,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * ``gxwf validate-tests-tree`` — batch-validate every workflow-test file
3
+ * (``*-tests.yml``, ``*-tests.yaml``, ``*.gxwf-tests.yml``, ``*.gxwf-tests.yaml``)
4
+ * under a directory against the ``galaxy.tool_util_models.Tests`` JSON Schema.
5
+ *
6
+ * Unlike ``validate-tree`` this uses its own discovery pass because test
7
+ * documents don't carry a ``class: GalaxyWorkflow`` / ``a_galaxy_workflow``
8
+ * marker — classification is filename-based.
9
+ *
10
+ * With ``--auto-workflow``, each test file is paired with a sibling workflow
11
+ * by suffix convention and cross-checked. Silent no-op when no sibling is
12
+ * found.
13
+ */
14
+ import { type TestFormatDiagnostic } from "@galaxy-tool-util/schema";
15
+ export interface ValidateTestsTreeOptions {
16
+ json?: boolean;
17
+ autoWorkflow?: boolean;
18
+ }
19
+ export interface TestsTreeFileReport {
20
+ path: string;
21
+ valid: boolean;
22
+ errors: TestFormatDiagnostic[];
23
+ workflow?: string;
24
+ }
25
+ export interface ValidateTestsTreeReport {
26
+ root: string;
27
+ files: TestsTreeFileReport[];
28
+ summary: {
29
+ total: number;
30
+ ok: number;
31
+ fail: number;
32
+ error: number;
33
+ };
34
+ }
35
+ export declare function runValidateTestsTree(dir: string, opts?: ValidateTestsTreeOptions): Promise<void>;
36
+ //# sourceMappingURL=validate-tests-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-tests-tree.d.ts","sourceRoot":"","sources":["../../src/commands/validate-tests-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAML,KAAK,oBAAoB,EAE1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAuID,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,IAAI,CAAC,CA6Cf"}