export function generateArtifact()

in eng/tools/spec-gen-sdk-runner/src/command-helpers.ts [237:278]


export function generateArtifact(
  commandInput: SpecGenSdkCmdInput,
  result: string,
  breakingChangeLabel: string,
  hasBreakingChange: boolean,
  hasManagementPlaneSpecs: boolean,
): number {
  const specGenSdkArtifactName = "spec-gen-sdk-artifact";
  const specGenSdkArtifactFileName = specGenSdkArtifactName + ".json";
  const specGenSdkArtifactPath = "out/spec-gen-sdk-artifact";
  const specGenSdkArtifactAbsoluteFolder = path.join(
    commandInput.workingFolder,
    specGenSdkArtifactPath,
  );
  try {
    if (!fs.existsSync(specGenSdkArtifactAbsoluteFolder)) {
      fs.mkdirSync(specGenSdkArtifactAbsoluteFolder, { recursive: true });
    }
    // Write artifact
    const artifactInfo: SpecGenSdkArtifactInfo = {
      language: commandInput.sdkLanguage,
      result,
      labelAction: hasBreakingChange,
      isSpecGenSdkCheckRequired:
        hasManagementPlaneSpecs && SpecGenSdkRequiredSettings[commandInput.sdkLanguage as SdkName],
    };
    fs.writeFileSync(
      path.join(commandInput.workingFolder, specGenSdkArtifactPath, specGenSdkArtifactFileName),
      JSON.stringify(artifactInfo, undefined, 2),
    );
    setVsoVariable("SpecGenSdkArtifactName", specGenSdkArtifactName);
    setVsoVariable("SpecGenSdkArtifactPath", specGenSdkArtifactPath);
    setVsoVariable("BreakingChangeLabelAction", hasBreakingChange ? "add" : "remove");
    setVsoVariable("BreakingChangeLabel", breakingChangeLabel);
  } catch (error) {
    logMessage("Runner: errors occurred while processing breaking change", LogLevel.Group);
    vsoLogIssue(`Runner: errors writing breaking change label artifacts:${error}`);
    logMessage("ending group logging", LogLevel.EndGroup);
    return 1;
  }
  return 0;
}