cds-snc/elenchos

View on GitHub
src/lib/util/getRefId.ts

Summary

Maintainability
A
25 mins
Test Coverage
import { isMaster } from "./isMaster";
import { RequestBody } from "../../interfaces";

const setFromEventRef = (event: RequestBody) => {
  const ref = event.ref.split("/");
  return ref[ref.length - 1];
};

const validateFields = (event: RequestBody) => {
  if (!event || !event.repository || !event.repository.full_name) {
    return false;
  }

  return true;
};

export const getRefId = (event: RequestBody): false | string => {
  let refId: false | string = false;

  if (!validateFields(event)) {
    return false;
  }

  const fullName = event.repository.full_name;

  if (event.action && event.action !== "completed") {
    refId = event.pull_request.head.ref;
  } else if (event.action && event.action === "completed") {
    refId = event.check_run.check_suite.pull_requests[0].head.ref;
  } else if (event.ref && !isMaster(event)) {
    refId = setFromEventRef(event);
  }

  return refId ? `${fullName}/${refId}` : false;
};

export const getFullNameFromRefId = (refId: string): false | string => {
  if (!refId) return false;
  let ref = refId.split("/");
  ref.pop();
  return ref.join("/");
};