function genCircleParametersForPush()

in torchci/lib/bot/triggerCircleCIWorkflows.ts [158:212]


function genCircleParametersForPush(
  config: Config,
  context: Context
): Params {
  const {
    default_params: parameters = {},
    labels_to_circle_params: labelsToParams,
  } = config;
  context.log.info(
    { parameters },
    "genCircleParametersForPush (default_params)"
  );
  const onTag: boolean = context.payload["ref"].startsWith("refs/tags");
  const strippedRef: string = stripReference(context.payload["ref"]);
  for (const label of Object.keys(labelsToParams)) {
    context.log.info({ label }, "genParametersForPush");
    const defaultTrueOn = labelsToParams[label].default_true_on;
    if (!defaultTrueOn) {
      context.log.info(
        { label },
        "genParametersForPush (no default_true_on found)"
      );
      continue;
    }
    const refsToMatch = onTag ? "tags" : "branches";
    context.log.info({ defaultTrueOn, refsToMatch, strippedRef });
    for (const pattern of defaultTrueOn[refsToMatch] || []) {
      context.log.info({ pattern }, "genParametersForPush");
      if (strippedRef.match(pattern)) {
        const { parameter } = labelsToParams[label];
        if (parameter !== undefined) {
          context.log.info(
            { parameter },
            "genParametersForPush 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 },
              "genParametersForPush (set_to_false) setting param to false"
            );
            parameters[param] = false;
          }
        }
      }
    }
  }
  return parameters;
}