GenerAI / worldmonitor /scripts /lib /main-module.mjs
amogaddy's picture
Integra World Monitor (AGPL-3.0, self-hosted) nello Space: pagina, menu, e arricchimento notizie per la AI (part 4)
ee888e1 verified
Raw
History Blame Contribute Delete
1.22 kB
import { realpathSync } from 'node:fs';
import { fileURLToPath, pathToFileURL } from 'node:url';
/**
* Report whether `moduleUrl` is the entrypoint the process was started with.
*
* Both sides are resolved through `realpathSync` first. Node sets
* `import.meta.url` to the real path while `process.argv[1]` keeps whatever
* path the caller typed, so the naive comparison silently no-ops — exit 0, zero
* output — whenever the checkout is reached through a symlink (`/tmp` ->
* `/private/tmp` on macOS is the common one). For an audit or gate that is the
* worst possible failure: it looks exactly like a clean run.
*/
export function isMainModule(moduleUrl, argv1) {
if (!argv1) return false;
try {
return pathToFileURL(realpathSync(fileURLToPath(moduleUrl))).href
=== pathToFileURL(realpathSync(argv1)).href;
} catch {
// Degrade to the plain comparison rather than answering `false`: a throw
// here (an unresolvable path, a permission error) must not put the caller
// back to exiting 0 with no output, which is the silent no-op this
// function exists to prevent.
try {
return moduleUrl === pathToFileURL(argv1).href;
} catch {
return false;
}
}
}