export function genCircleParametersForPR()

in torchci/lib/bot/triggerCircleCIWorkflows.ts [114:156]


export function genCircleParametersForPR(
  config: Config,
  context: Context,
  appliedLabels: string[]
): Params {
  context.log.info({ config, appliedLabels }, "genParametersForPR");
  const {
    default_params: parameters = {},
    labels_to_circle_params: labelsToParams,
  } = config;
  context.log.info({ parameters }, "genCircleParametersForPR (default_params)");
  for (const label of Object.keys(labelsToParams)) {
    const defaultTrueOn = labelsToParams[label].default_true_on || {};
    if (
      appliedLabels.includes(label) ||
      (defaultTrueOn.pull_request !== undefined &&
        !appliedLabels.includes(invert(label)))
    ) {
      const { parameter } = labelsToParams[label];
      if (parameter !== undefined) {
        context.log.info(
          { parameter },
          "genCircleParametersForPR setting parameter to true"
        );
        parameters[parameter] = true;
      }
      if (labelsToParams[label].set_to_false) {
        const falseParams = labelsToParams[label].set_to_false;
        // There's potential for labels to override each other which we should
        // probably be careful of
        for (const falseLabel of Object.keys(falseParams)) {
          const param = falseParams[falseLabel];
          context.log.info(
            { param },
            "genCircleParametersForPR (set_to_false) setting param to false"
          );
          parameters[param] = false;
        }
      }
    }
  }
  return parameters;
}