fix(build): remove python launcher dep and tighten target resolution

This commit is contained in:
2026-02-17 23:30:24 -08:00
parent f20d019c11
commit 25fddce372
5 changed files with 17 additions and 5 deletions

View File

@@ -39,6 +39,7 @@ jobs:
run: bun install --frozen-lockfile run: bun install --frozen-lockfile
- name: Build (TypeScript check) - name: Build (TypeScript check)
# Keep explicit typecheck for fast fail before full build/bundle.
run: bun run tsc --noEmit run: bun run tsc --noEmit
- name: Build (bundle) - name: Build (bundle)

View File

@@ -54,7 +54,7 @@ help:
" dev-toggle Toggle overlay in a running local Electron app" \ " dev-toggle Toggle overlay in a running local Electron app" \
" dev-stop Stop a running local Electron app" \ " dev-stop Stop a running local Electron app" \
" docs-dev Run VitePress docs dev server" \ " docs-dev Run VitePress docs dev server" \
" docs Build VitePress static docs" \ " docs Build VitePress static docs" \
" docs-preview Preview built VitePress docs" \ " docs-preview Preview built VitePress docs" \
" install-linux Install Linux wrapper/theme/app artifacts" \ " install-linux Install Linux wrapper/theme/app artifacts" \
" install-macos Install macOS wrapper/theme/app artifacts" \ " install-macos Install macOS wrapper/theme/app artifacts" \
@@ -134,7 +134,9 @@ build-macos-unsigned: deps
build-launcher: build-launcher:
@printf '%s\n' "[INFO] Bundling launcher script" @printf '%s\n' "[INFO] Bundling launcher script"
@bun build ./launcher/main.ts --target=bun --packages=bundle --outfile=subminer @bun build ./launcher/main.ts --target=bun --packages=bundle --outfile=subminer
@python3 -c 'from pathlib import Path; p=Path("subminer"); c=p.read_text(); c=("#!/usr/bin/env bun\n"+c) if not c.startswith("#!/usr/bin/env bun\n") else c; p.write_text(c)' @if ! head -1 subminer | grep -q '^#!/usr/bin/env bun'; then \
{ printf '#!/usr/bin/env bun\n'; cat subminer; } > subminer.tmp && mv subminer.tmp subminer; \
fi
@chmod +x subminer @chmod +x subminer
clean: clean:

View File

@@ -18,6 +18,7 @@
"electron": "^37.10.3", "electron": "^37.10.3",
"electron-builder": "^26.7.0", "electron-builder": "^26.7.0",
"esbuild": "^0.25.0", "esbuild": "^0.25.0",
"prettier": "^3.6.2",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"vitepress": "^1.6.4", "vitepress": "^1.6.4",
}, },
@@ -970,6 +971,8 @@
"preact": ["preact@10.28.3", "", {}, "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA=="], "preact": ["preact@10.28.3", "", {}, "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA=="],
"prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="],
"proc-log": ["proc-log@5.0.0", "", {}, "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ=="], "proc-log": ["proc-log@5.0.0", "", {}, "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ=="],
"progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="], "progress": ["progress@2.0.3", "", {}, "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="],

View File

@@ -13,7 +13,7 @@ cd SubMiner
make deps make deps
# or manually: # or manually:
bun install bun install
bun --cwd vendor/texthooker-ui install cd vendor/texthooker-ui && bun install
``` ```
## Building ## Building

View File

@@ -216,12 +216,18 @@ function ensureTarget(target: string, parsed: Args): void {
return; return;
} }
const resolved = resolvePathMaybe(target); const resolved = resolvePathMaybe(target);
if (fs.existsSync(resolved) && fs.statSync(resolved).isFile()) { let stat: fs.Stats | null = null;
try {
stat = fs.statSync(resolved);
} catch {
stat = null;
}
if (stat?.isFile()) {
parsed.target = resolved; parsed.target = resolved;
parsed.targetKind = 'file'; parsed.targetKind = 'file';
return; return;
} }
if (fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()) { if (stat?.isDirectory()) {
parsed.directory = resolved; parsed.directory = resolved;
return; return;
} }