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> { private async validateDockerCmdFileArgument(): Promise<void> {
const dockerCmdFile = this.input.getDockerCmdFile(); const dockerCmdFile = this.input.getDockerCmdFile();
if (dockerCmdFile !== null) { if (dockerCmdFile === null) return;
if (
!fs.existsSync(dockerCmdFile) ||
!fs.statSync(dockerCmdFile).isFile()
) {
throw new Error(
`dockerCmdFile '${dockerCmdFile}' MUST be an existing file`,
);
}
try { try {
fs.accessSync(dockerCmdFile, fs.constants.R_OK | fs.constants.X_OK); const s = await fs.stat(dockerCmdFile);
} catch { 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( throw new Error(
`dockerCmdFile '${dockerCmdFile}' MUST have read and execute rights`, `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);
} }
} }
} }