Skip to content

Commit ce7478c

Browse files
committed
feat: improve error reporting during import/merge
* check relevant file permissions before running opossum-file * assume that all errors happening during opossum-file execution can be interpreted as the input file being invalid
1 parent 8320c81 commit ce7478c

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

src/ElectronBackend/main/listeners.ts

+18
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,12 @@ export function getImportFileConvertAndLoadListener(
209209
throw new Error('Input file does not exist');
210210
}
211211

212+
try {
213+
fs.accessSync(resourceFilePath, fs.constants.R_OK);
214+
} catch (error) {
215+
throw new Error('Permission error: cannot read input file');
216+
}
217+
212218
if (!opossumFilePath.trim()) {
213219
throw new Error('No .opossum save location selected');
214220
}
@@ -221,6 +227,12 @@ export function getImportFileConvertAndLoadListener(
221227
throw new Error('Output directory does not exist');
222228
}
223229

230+
try {
231+
fs.accessSync(path.dirname(opossumFilePath), fs.constants.W_OK);
232+
} catch (error) {
233+
throw new Error('Permission error: cannot write to output directory');
234+
}
235+
224236
logger.info('Converting input file to .opossum format');
225237
await convertToOpossum(resourceFilePath, opossumFilePath, fileType);
226238

@@ -254,6 +266,12 @@ export function getMergeFileAndLoadListener(
254266
throw new Error('Input file does not exist');
255267
}
256268

269+
try {
270+
fs.accessSync(inputFilePath, fs.constants.R_OK);
271+
} catch (error) {
272+
throw new Error('Permission error: cannot read input file');
273+
}
274+
257275
const currentlyOpenOpossumFilePath =
258276
getGlobalBackendState().opossumFilePath;
259277

src/ElectronBackend/opossum-file/ExternalFileConverter.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ export abstract class ExternalFileConverter extends FileConverter {
2222
toBeConvertedFilePath,
2323
]);
2424
} catch (error) {
25-
throw new Error(
26-
`Conversion of ${this.fileTypeName} file to .opossum file failed`,
27-
);
25+
throw new Error(`Input file is not a valid ${this.fileTypeName} file`);
2826
}
2927
}
3028
}

src/ElectronBackend/opossum-file/FileConverter.ts

+5-7
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,12 @@ export abstract class FileConverter {
4747
'--opossum',
4848
opossumFilePath,
4949
]);
50-
51-
if (preConvertedFilePath) {
52-
fs.rmSync(preConvertedFilePath);
53-
}
5450
} catch (error) {
55-
throw new Error(
56-
`Merging ${this.fileTypeName} file into current file failed`,
57-
);
51+
throw new Error(`Input file is not a valid ${this.fileTypeName} file`);
52+
}
53+
54+
if (preConvertedFilePath) {
55+
fs.rmSync(preConvertedFilePath);
5856
}
5957
}
6058
}

src/ElectronBackend/opossum-file/opossum-file.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const fileTypeToConverter: Record<FileType, FileConverter> = {
1515
})(),
1616
[FileType.OWASP_JSON]: new (class extends ExternalFileConverter {
1717
readonly fileTypeSwitch: string = '--owasp-json';
18-
readonly fileTypeName: string = 'OWASP Dependency-check';
18+
readonly fileTypeName: string = 'OWASP Dependency-Check';
1919
})(),
2020
};
2121

0 commit comments

Comments
 (0)