Files
iofficeai--officecli/npm/officecli.js
T
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

40 lines
1.3 KiB
JavaScript

#!/usr/bin/env node
'use strict';
// Launcher shim. npm links this as the `officecli` command. It execs the native
// binary fetched by postinstall, forwarding argv, stdio and the exit code. If
// the binary is missing (postinstall was skipped or failed offline), it is
// downloaded lazily on this first run.
//
// This lives at the package root, NOT under bin/, on purpose: the repo's root
// .gitignore ignores `bin/`, which would silently drop a bin/ shim from the
// published tarball.
const fs = require('fs');
const { spawnSync } = require('child_process');
const installer = require('./lib/install-binary');
async function main() {
let bin = installer.binaryPath();
if (!fs.existsSync(bin)) {
try {
bin = await installer.ensureBinary();
} catch (err) {
process.stderr.write('[officecli] ' + err.message + '\n');
process.exit(1);
}
}
const res = spawnSync(bin, process.argv.slice(2), { stdio: 'inherit' });
if (res.error) {
process.stderr.write('[officecli] failed to launch binary: ' + res.error.message + '\n');
process.exit(1);
}
// Signal-terminated child: surface a non-zero exit rather than a null status.
if (res.signal) {
process.exit(1);
}
process.exit(res.status === null ? 1 : res.status);
}
main();