feat: add dir_names_exclude_current_dir input and cleaned up logic to retrieve the current sha (#1229)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: tj-actions[bot] <109116665+tj-actions-bot@users.noreply.github.com>
Co-authored-by: jackton1 <jackton1@users.noreply.github.com>
This commit is contained in:
Tonye Jack
2023-06-06 06:00:56 -06:00
committed by GitHub
parent cdf9afcec8
commit 353ea22e6f
7 changed files with 59 additions and 25 deletions

33
dist/index.js generated vendored
View File

@@ -118,7 +118,7 @@ const getDiffFiles = ({ inputs, workingDirectory, hasSubmodule, diffResult, diff
files = files.map(file => (0, utils_1.getDirnameMaxDepth)({
pathStr: file,
dirNamesMaxDepth: inputs.dirNamesMaxDepth,
excludeRoot: inputs.dirNamesExcludeRoot
excludeCurrentDir: inputs.dirNamesExcludeRoot || inputs.dirNamesExcludeCurrentDir
}));
files = [...new Set(files)];
}
@@ -173,7 +173,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.getSHAForPullRequestEvent = exports.getSHAForPushEvent = void 0;
const core = __importStar(__nccwpck_require__(2186));
const utils_1 = __nccwpck_require__(918);
const getCurrentSHA = ({ inputs, workingDirectory }) => __awaiter(void 0, void 0, void 0, function* () {
const getCurrentSHA = ({ env, inputs, workingDirectory }) => __awaiter(void 0, void 0, void 0, function* () {
let currentSha = inputs.sha;
core.debug('Getting current SHA...');
if (inputs.until) {
@@ -199,7 +199,17 @@ const getCurrentSHA = ({ inputs, workingDirectory }) => __awaiter(void 0, void 0
}
else {
if (!currentSha) {
currentSha = yield (0, utils_1.getHeadSha)({ cwd: workingDirectory });
if (env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA &&
(yield (0, utils_1.verifyCommitSha)({
sha: env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA,
cwd: workingDirectory,
showAsErrorMessage: false
})) === 0) {
currentSha = env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA;
}
else {
currentSha = yield (0, utils_1.getHeadSha)({ cwd: workingDirectory });
}
}
}
yield (0, utils_1.verifyCommitSha)({ sha: currentSha, cwd: workingDirectory });
@@ -252,7 +262,7 @@ const getSHAForPushEvent = (inputs, env, workingDirectory, isShallow, hasSubmodu
});
}
}
const currentSha = yield getCurrentSHA({ inputs, workingDirectory });
const currentSha = yield getCurrentSHA({ env, inputs, workingDirectory });
let previousSha = inputs.baseSha;
const diff = '..';
if (previousSha && currentSha && currentBranch && targetBranch) {
@@ -409,7 +419,7 @@ const getSHAForPullRequestEvent = (inputs, env, workingDirectory, isShallow, has
}
core.info('Completed fetching more history.');
}
let currentSha = yield getCurrentSHA({ inputs, workingDirectory });
const currentSha = yield getCurrentSHA({ env, inputs, workingDirectory });
let previousSha = inputs.baseSha;
let diff = '...';
if (previousSha && currentSha && currentBranch && targetBranch) {
@@ -418,7 +428,7 @@ const getSHAForPullRequestEvent = (inputs, env, workingDirectory, isShallow, has
core.error(`Please verify that both commits are valid, and increase the fetch_depth to a number higher than ${inputs.fetchDepth}.`);
throw new Error('Similar commit hashes detected.');
}
yield (0, utils_1.verifyCommitSha)({ sha: currentSha, cwd: workingDirectory });
yield (0, utils_1.verifyCommitSha)({ sha: previousSha, cwd: workingDirectory });
core.debug(`Previous SHA: ${previousSha}`);
return {
previousSha,
@@ -485,9 +495,6 @@ const getSHAForPullRequestEvent = (inputs, env, workingDirectory, isShallow, has
previousSha = env.GITHUB_EVENT_PULL_REQUEST_BASE_SHA;
}
}
if (previousSha === currentSha && env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA) {
currentSha = env.GITHUB_EVENT_PULL_REQUEST_HEAD_SHA;
}
if (!(yield (0, utils_1.canDiffCommits)({
cwd: workingDirectory,
sha1: previousSha,
@@ -676,6 +683,9 @@ const getInputs = () => {
const dirNamesExcludeRoot = core.getBooleanInput('dir_names_exclude_root', {
required: false
});
const dirNamesExcludeCurrentDir = core.getBooleanInput('dir_names_exclude_current_dir', {
required: false
});
const json = core.getBooleanInput('json', { required: false });
const escapeJson = core.getBooleanInput('escape_json', { required: false });
const fetchDepth = core.getInput('fetch_depth', { required: false });
@@ -706,6 +716,7 @@ const getInputs = () => {
diffRelative,
dirNames,
dirNamesExcludeRoot,
dirNamesExcludeCurrentDir,
json,
escapeJson,
sinceLastRemoteCommit,
@@ -1579,14 +1590,14 @@ const canDiffCommits = ({ cwd, sha1, sha2, diff }) => __awaiter(void 0, void 0,
return true;
});
exports.canDiffCommits = canDiffCommits;
const getDirnameMaxDepth = ({ pathStr, dirNamesMaxDepth, excludeRoot }) => {
const getDirnameMaxDepth = ({ pathStr, dirNamesMaxDepth, excludeCurrentDir }) => {
const pathArr = dirname(pathStr).split(path.sep);
const maxDepth = Math.min(dirNamesMaxDepth || pathArr.length, pathArr.length);
let output = pathArr[0];
for (let i = 1; i < maxDepth; i++) {
output = path.join(output, pathArr[i]);
}
if (excludeRoot && output === '.') {
if (excludeCurrentDir && output === '.') {
return '';
}
return normalizePath(output);