infernoflow 0.32.0 → 0.32.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.
@@ -21,6 +21,7 @@
21
21
 
22
22
  import * as fs from "node:fs";
23
23
  import * as path from "node:path";
24
+ import { fileURLToPath } from "node:url";
24
25
  import { spawnSync } from "node:child_process";
25
26
  import { header, ok, warn, info, done, bold, cyan, gray, green, red, yellow } from "../ui/output.mjs";
26
27
 
@@ -42,7 +43,7 @@ function runJson(command, cwd) {
42
43
  try {
43
44
  const [bin, ...args] = command.split(" ");
44
45
  const result = spawnSync(process.execPath, [
45
- path.join(path.dirname(path.dirname(new URL(import.meta.url).pathname)), "..", "bin", "infernoflow.mjs"),
46
+ path.join(path.dirname(path.dirname(fileURLToPath(import.meta.url))), "..", "bin", "infernoflow.mjs"),
46
47
  ...command.split(" ").slice(1)
47
48
  ], { cwd, encoding: "utf8", timeout: 30_000 });
48
49
  const out = result.stdout?.trim();
@@ -54,7 +55,7 @@ function runJson(command, cwd) {
54
55
  function runCli(args, cwd) {
55
56
  try {
56
57
  const result = spawnSync(process.execPath, [
57
- path.join(path.dirname(path.dirname(new URL(import.meta.url).pathname)), "..", "bin", "infernoflow.mjs"),
58
+ path.join(path.dirname(path.dirname(fileURLToPath(import.meta.url))), "..", "bin", "infernoflow.mjs"),
58
59
  ...args
59
60
  ], { cwd, encoding: "utf8", timeout: 30_000 });
60
61
  return result.stdout?.trim() || "";
@@ -23,6 +23,7 @@
23
23
  import * as fs from "node:fs";
24
24
  import * as path from "node:path";
25
25
  import * as os from "node:os";
26
+ import { fileURLToPath } from "node:url";
26
27
  import { execSync, spawnSync } from "node:child_process";
27
28
  import { bold, cyan, gray, green, yellow, red } from "../ui/output.mjs";
28
29
 
@@ -355,7 +356,7 @@ export async function demoCommand(rawArgs) {
355
356
 
356
357
  // Find infernoflow bin
357
358
  const ifBin = path.resolve(
358
- path.dirname(path.dirname(path.dirname(new URL(import.meta.url).pathname))),
359
+ path.dirname(path.dirname(path.dirname(fileURLToPath(import.meta.url)))),
359
360
  "bin", "infernoflow.mjs"
360
361
  );
361
362
 
@@ -45,12 +45,17 @@ function checkNodeVersion() {
45
45
  }
46
46
 
47
47
  function checkCli() {
48
+ // Use shell: true so Windows .cmd wrappers resolve correctly.
49
+ // If the spawn fails entirely, we're still clearly running — downgrade to warn.
48
50
  try {
49
- const r = spawnSync("infernoflow", ["--version"], { encoding: "utf8", timeout: 5000 });
50
- if (r.status === 0) return pass(`infernoflow v${r.stdout.trim()} installed`);
51
- return fail("infernoflow CLI not found on PATH", "npm install -g infernoflow");
51
+ const r = spawnSync("infernoflow", ["--version"], { encoding: "utf8", timeout: 5000, shell: true });
52
+ if (r.status === 0 && r.stdout.trim()) {
53
+ return pass(`infernoflow v${r.stdout.trim()} on PATH`);
54
+ }
55
+ // Running but PATH lookup failed for subprocesses (common on Windows)
56
+ return warn("infernoflow not resolvable in subprocesses", "Ensure npm global bin folder is in your PATH");
52
57
  } catch {
53
- return fail("infernoflow CLI not found on PATH", "npm install -g infernoflow");
58
+ return warn("infernoflow not resolvable in subprocesses", "Ensure npm global bin folder is in your PATH");
54
59
  }
55
60
  }
56
61
 
@@ -23,6 +23,7 @@
23
23
 
24
24
  import * as fs from "node:fs";
25
25
  import * as path from "node:path";
26
+ import { fileURLToPath } from "node:url";
26
27
  import { spawnSync } from "node:child_process";
27
28
  import { header, ok, warn, info, done, bold, cyan, gray, green, yellow, red } from "../ui/output.mjs";
28
29
 
@@ -134,7 +135,7 @@ function contractStatus(pkgDir) {
134
135
  // ── CLI runner ────────────────────────────────────────────────────────────────
135
136
 
136
137
  function runInferno(args, cwd) {
137
- const binPath = path.join(path.dirname(path.dirname(new URL(import.meta.url).pathname)), "..", "bin", "infernoflow.mjs");
138
+ const binPath = path.join(path.dirname(path.dirname(fileURLToPath(import.meta.url))), "..", "bin", "infernoflow.mjs");
138
139
  const result = spawnSync(process.execPath, [binPath, ...args], {
139
140
  cwd,
140
141
  encoding: "utf8",
@@ -50,7 +50,7 @@ function loadNotifyConfig(infernoDir, args) {
50
50
  function runJson(cmd, cwd) {
51
51
  try {
52
52
  const result = spawnSync(process.execPath, [
53
- path.join(path.dirname(path.dirname(new URL(import.meta.url).pathname)), "..", "bin", "infernoflow.mjs"),
53
+ path.join(path.dirname(path.dirname(fileURLToPath(import.meta.url))), "..", "bin", "infernoflow.mjs"),
54
54
  ...cmd.split(" ").slice(1),
55
55
  ], { cwd, encoding: "utf8", timeout: 20_000 });
56
56
  const out = result.stdout?.trim();
@@ -21,6 +21,7 @@
21
21
 
22
22
  import * as fs from "node:fs";
23
23
  import * as path from "node:path";
24
+ import { fileURLToPath } from "node:url";
24
25
  import { execSync, spawnSync } from "node:child_process";
25
26
  import { ok, warn, info, bold, cyan, gray, green, yellow } from "../ui/output.mjs";
26
27
 
@@ -79,7 +80,7 @@ function runSuggest(changedFiles, cwd, infernoDir, dryRun, silent) {
79
80
 
80
81
  try {
81
82
  spawnSync(process.execPath, [
82
- path.join(path.dirname(path.dirname(path.dirname(new URL(import.meta.url).pathname))), "bin", "infernoflow.mjs"),
83
+ path.join(path.dirname(path.dirname(path.dirname(fileURLToPath(import.meta.url)))), "bin", "infernoflow.mjs"),
83
84
  "suggest", desc, "--json"
84
85
  ], { cwd, encoding: "utf8", timeout: 30_000, stdio: "ignore" });
85
86
 
@@ -91,7 +92,7 @@ function runSuggest(changedFiles, cwd, infernoDir, dryRun, silent) {
91
92
  // Silent check — write issues to WATCH.log
92
93
  try {
93
94
  const result = spawnSync(process.execPath, [
94
- path.join(path.dirname(path.dirname(path.dirname(new URL(import.meta.url).pathname))), "bin", "infernoflow.mjs"),
95
+ path.join(path.dirname(path.dirname(path.dirname(fileURLToPath(import.meta.url)))), "bin", "infernoflow.mjs"),
95
96
  "check", "--json"
96
97
  ], { cwd, encoding: "utf8", timeout: 15_000 });
97
98
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "infernoflow",
3
- "version": "0.32.0",
3
+ "version": "0.32.2",
4
4
  "description": "The forge for liquid code - keep capabilities, contracts, and docs in sync.",
5
5
  "type": "module",
6
6
  "bin": {