feat(validate-cmd-file): async validation

This commit is contained in:
Maarten Groeneweg 2024-02-17 14:29:58 +01:00
parent a5fbebd976
commit 3154895fb3

View file

@ -119,22 +119,23 @@ class Renovate {
private async validateDockerCmdFileArgument(): Promise<void> {
const dockerCmdFile = this.input.getDockerCmdFile();
if (dockerCmdFile !== null) {
if (
!fs.existsSync(dockerCmdFile) ||
!fs.statSync(dockerCmdFile).isFile()
) {
throw new Error(
`dockerCmdFile '${dockerCmdFile}' MUST be an existing file`,
);
}
if (dockerCmdFile === null) return;
try {
fs.accessSync(dockerCmdFile, fs.constants.R_OK | fs.constants.X_OK);
} catch {
const s = await fs.stat(dockerCmdFile);
if (!s.isFile)
throw new Error(`dockerCmdFile '${dockerCmdFile}' MUST be a file`);
if (
(s.mode & fs.constants.R_OK) === 0 ||
(s.mode & fs.constants.X_OK) === 0
)
throw new Error(
`dockerCmdFile '${dockerCmdFile}' MUST have read and execute rights`,
);
}
} catch (err) {
if (err instanceof Error && 'code' in err && err.code === 'ENOENT')
throw new Error(`dockerCmdFile '${dockerCmdFile}' does not exist`);
throw new Error(err as string);
}
}
}