generate method

  1. @override
bool generate()
override

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;
}