Move all the branch checking into its own file

This commit is contained in:
Josh Dales
2023-01-28 15:58:00 -05:00
parent f2b2513f41
commit 2343710777
2 changed files with 44 additions and 40 deletions

42
src/branch.ts Normal file
View File

@@ -0,0 +1,42 @@
import * as core from '@actions/core';
import * as github from '@actions/github';
function getHeadBranchName(): string | undefined {
const pullRequest = github.context.payload.pull_request;
if (!pullRequest) {
return undefined;
}
return pullRequest.head?.ref;
}
export function checkBranch(glob: string[]): boolean {
const branchName = getHeadBranchName();
if (!branchName) {
core.debug(` no branch name`);
return false;
}
core.debug(` checking "branch" pattern against ${branchName}`);
const matchers = glob.map(g => new RegExp(g));
for (const matcher of matchers) {
if (matchBranchPattern(matcher, branchName)) {
core.debug(` "branch" patterns matched against ${branchName}`);
return true;
}
}
core.debug(` "branch" patterns did not match against ${branchName}`);
return false;
}
function matchBranchPattern(matcher: RegExp, branchName: string): boolean {
core.debug(` - ${matcher}`);
if (matcher.test(branchName)) {
core.debug(` "branch" pattern matched`);
return true;
}
core.debug(` ${matcher} did not match`);
return false;
}

View File

@@ -3,6 +3,8 @@ import * as github from '@actions/github';
import * as yaml from 'js-yaml';
import {Minimatch, IMinimatch} from 'minimatch';
import {checkBranch} from './branch';
interface MatchConfig {
all?: string[];
any?: string[];
@@ -72,15 +74,6 @@ function getPrNumber(): number | undefined {
return pullRequest.number;
}
function getHeadBranchName(): string | undefined {
const pullRequest = github.context.payload.pull_request;
if (!pullRequest) {
return undefined;
}
return pullRequest.head?.ref;
}
async function getChangedFiles(
client: ClientType,
prNumber: number
@@ -228,37 +221,6 @@ function checkAll(changedFiles: string[], globs: string[]): boolean {
return true;
}
function matchBranchPattern(matcher: RegExp, branchName: string): boolean {
core.debug(` - ${matcher}`);
if (matcher.test(branchName)) {
core.debug(` "branch" pattern matched`);
return true;
}
core.debug(` ${matcher} did not match`);
return false;
}
function checkBranch(glob: string[]): boolean {
const branchName = getHeadBranchName();
if (!branchName) {
core.debug(` no branch name`);
return false;
}
core.debug(` checking "branch" pattern against ${branchName}`);
const matchers = glob.map(g => new RegExp(g));
for (const matcher of matchers) {
if (matchBranchPattern(matcher, branchName)) {
core.debug(` "branch" patterns matched against ${branchName}`);
return true;
}
}
core.debug(` "branch" patterns did not match against ${branchName}`);
return false;
}
function checkMatch(changedFiles: string[], matchConfig: MatchConfig): boolean {
if (matchConfig.all !== undefined) {
if (!checkAll(changedFiles, matchConfig.all)) {