generate method
Generate
Implementation
@override
bool generate() {
SbomUtilities.loud('Generating SPDX SBOM');
// Create the sbom output file
final outputFileName = path.join(
configuration.packageTopLevel, SbomSpdxConstants.outputFileName);
final outputFile = File(outputFileName);
if (outputFile.existsSync()) {
try {
outputFile.deleteSync();
} on Exception {
SbomUtilities.error(
'SPDX SBOM generation - unable to delete existing sbom file at $outputFileName - aborting generation');
return false;
}
}
try {
outputFile.createSync();
} on FileSystemException {
SbomUtilities.error(
'SPDX SBOM generation - unable to create output sbom file at $outputFileName - aborting generation');
return false;
}
// Create the formatter
late SbomSpdxIOutputFormatter formatter;
formatType = configuration.sbomConfigurationContents[SbomConstants.sbomSpdx]
[SbomSpdxConstants.spdxOutputFormatDirective];
SbomUtilities.loud('SPDX format type is tag/value');
switch (formatType) {
case SbomSpdxConstants.spdxOutputTagValue:
{
formatter = SbomSpdxOutputTagvalueFormatter(outputFile, tags);
}
break;
default:
formatter = SbomSpdxOutputTagvalueFormatter(outputFile, tags);
}
var result = formatter.format();
if (!result) {
SbomUtilities.error(
'SPDX SBOM generation - unable to generate a formatted SPDX file at $outputFileName - aborting generation');
return false;
}
sbomFilePath = outputFileName;
return true;
}