CLI: turn the impeccable npm package into a platform-binary shim

cli/engine, cli/lib, and cli/bin/commands are gone; their behavior lives in
the engine binary. cli/bin/cli.js now resolves the binary from IMPECCABLE_BIN,
the @impeccable/cli-<os>-<arch> optional dependency (templates under
cli/platform-packages/, published by the engine release), the
~/.impeccable/bin/<version>/ cache, or a checksum-verified download, and
execs it. package.json drops the engine dependencies and the library
exports; puppeteer moves to devDependencies for the icon scripts.
README.npm.md describes the shim.

Prepared with AI assistance (Claude Code).
This commit is contained in:
Paul Bakaus
2026-08-31 19:57:42 -07:00
parent 11a1ea64a6
commit 6dd16d21ef
34 changed files with 197 additions and 27746 deletions
+15
View File
@@ -0,0 +1,15 @@
# Platform packages
Templates for the `@impeccable/cli-<os>-<arch>` packages the `impeccable` npm
shim (`cli/bin/cli.js`) declares as `optionalDependencies`. npm installs only
the one matching the host (`os` / `cpu` fields), and the shim resolves
`<package>/bin/impeccable[.exe]` from it before falling back to the user cache
or a download.
They are **published by the engine release**, not from this repo: the release
pipeline copies each template, sets `version` to the engine version, drops the
built binary at `bin/impeccable[.exe]` (executable), and publishes it under
`@impeccable`. The version pinned in this repo's `package.json`
`optionalDependencies` must equal `ENGINE_VERSION`.
Targets: `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `windows-x64`.
@@ -0,0 +1,17 @@
{
"name": "@impeccable/cli-darwin-arm64",
"version": "0.0.0-engine",
"description": "impeccable engine binary for darwin-arm64. Installed as an optional dependency of the impeccable npm package; do not depend on it directly.",
"license": "SEE LICENSE IN LICENSE",
"homepage": "https://impeccable.style",
"repository": {
"type": "git",
"url": "git+https://github.com/pbakaus/impeccable.git"
},
"os": ["darwin"],
"cpu": ["arm64"],
"files": ["bin/", "LICENSE"],
"bin": {
"impeccable-darwin-arm64": "bin/impeccable"
}
}
@@ -0,0 +1,17 @@
{
"name": "@impeccable/cli-darwin-x64",
"version": "0.0.0-engine",
"description": "impeccable engine binary for darwin-x64. Installed as an optional dependency of the impeccable npm package; do not depend on it directly.",
"license": "SEE LICENSE IN LICENSE",
"homepage": "https://impeccable.style",
"repository": {
"type": "git",
"url": "git+https://github.com/pbakaus/impeccable.git"
},
"os": ["darwin"],
"cpu": ["x64"],
"files": ["bin/", "LICENSE"],
"bin": {
"impeccable-darwin-x64": "bin/impeccable"
}
}
@@ -0,0 +1,17 @@
{
"name": "@impeccable/cli-linux-arm64",
"version": "0.0.0-engine",
"description": "impeccable engine binary for linux-arm64. Installed as an optional dependency of the impeccable npm package; do not depend on it directly.",
"license": "SEE LICENSE IN LICENSE",
"homepage": "https://impeccable.style",
"repository": {
"type": "git",
"url": "git+https://github.com/pbakaus/impeccable.git"
},
"os": ["linux"],
"cpu": ["arm64"],
"files": ["bin/", "LICENSE"],
"bin": {
"impeccable-linux-arm64": "bin/impeccable"
}
}
@@ -0,0 +1,17 @@
{
"name": "@impeccable/cli-linux-x64",
"version": "0.0.0-engine",
"description": "impeccable engine binary for linux-x64. Installed as an optional dependency of the impeccable npm package; do not depend on it directly.",
"license": "SEE LICENSE IN LICENSE",
"homepage": "https://impeccable.style",
"repository": {
"type": "git",
"url": "git+https://github.com/pbakaus/impeccable.git"
},
"os": ["linux"],
"cpu": ["x64"],
"files": ["bin/", "LICENSE"],
"bin": {
"impeccable-linux-x64": "bin/impeccable"
}
}
@@ -0,0 +1,17 @@
{
"name": "@impeccable/cli-windows-x64",
"version": "0.0.0-engine",
"description": "impeccable engine binary for windows-x64. Installed as an optional dependency of the impeccable npm package; do not depend on it directly.",
"license": "SEE LICENSE IN LICENSE",
"homepage": "https://impeccable.style",
"repository": {
"type": "git",
"url": "git+https://github.com/pbakaus/impeccable.git"
},
"os": ["win32"],
"cpu": ["x64"],
"files": ["bin/", "LICENSE"],
"bin": {
"impeccable-windows-x64": "bin/impeccable.exe"
}
}