Files
reverse-engineering-anything/src/artifacts/pyinstaller/PyInstallerFileAdmission.ts
T
MeskineMorty 49bb6c84b0 fix(pyinstaller): report changed admission as integrity (#6325)
Map RegularFileChangedError from reader admission to an integrity failure instead of the generic I/O and archive-open diagnostic. This preserves the changed-source condition and the existing stable-artifact recovery guidance.
2026-10-23 01:38:22 +08:00

44 lines
1.4 KiB
TypeScript

import {
NonRegularFileReadError,
RegularFileAdmissionFailure,
RegularFileChangedError,
RegularFileOperationCancelled,
} from "../../filesystem/RegularFile.js";
import { ArtifactReaderFailure } from "../ArtifactReader.js";
/** Both carrier and private-image admission preserve cancellation and cleanup. */
export const pyInstallerFileAdmissionFailure = (
path: string,
cause: unknown,
): ArtifactReaderFailure => {
if (cause instanceof ArtifactReaderFailure) return cause;
if (cause instanceof RegularFileOperationCancelled)
return new ArtifactReaderFailure(
"cancelled",
"PyInstaller file admission cancelled",
{ cause: cause.reason },
);
if (cause instanceof RegularFileAdmissionFailure)
return ArtifactReaderFailure.withCleanup(
pyInstallerFileAdmissionFailure(path, cause.cause),
ArtifactReaderFailure.cleanupObservation(cause.cleanupCause, path),
);
if (cause instanceof RegularFileChangedError)
return new ArtifactReaderFailure(
"integrity",
`PyInstaller source changed during admission: ${path}`,
{ cause },
);
if (cause instanceof NonRegularFileReadError)
return new ArtifactReaderFailure(
"format",
`PyInstaller source is not a regular file: ${path}`,
{ cause },
);
return new ArtifactReaderFailure(
"io",
"PyInstaller archive could not be opened",
{ cause },
);
};