UNPKG

@maggioli-rd/sr-codeowners-plugin

Version:
42 lines (41 loc) 1.61 kB
import SemanticReleaseError from "@semantic-release/error"; import { execa } from "execa"; import { getConfig } from "./utils.js"; export const verifyRelease = async (pluginConfig, { logger }) => { const { excludeRegex, header, codeownersPath, limit, leaderboard } = getConfig(pluginConfig); var cmd = "git shortlog -s -e -n --all |"; if (leaderboard == true) { logger.log("Set " + leaderboard + " as leaderboard"); cmd = "git shortlog -s -e -n --all | sed -e 's/^/# /' >> " + codeownersPath + " && " + cmd; } else { logger.log("Skip leaderboard!"); } if (header.length != 0) { logger.log("Set " + header + " as header"); cmd = "echo '" + header + "' > " + codeownersPath + " && " + cmd; } else { logger.log("Skip header!"); cmd = "touch " + codeownersPath + " && " + cmd; } if (excludeRegex.length != 0) { logger.log("Set " + excludeRegex + " as excludeRegex"); cmd = cmd + " grep -v -E '" + excludeRegex + "' |"; } else { logger.log("Skip excludeRegex!"); } logger.log("Set " + limit + " as limit"); cmd = "(rm CODEOWNERS " + codeownersPath + " || true) && " + cmd + " sed 's/.*<\\(.*\\)>/\\1/' | sed -e 's/^/* /' | sort -u | head -" + limit + " >> " + codeownersPath; logger.log("Running cmd: " + cmd); await verifyCommand("bash", ["-c", cmd]); }; const verifyCommand = async (command, args) => { try { await execa(command, args); } catch (error) { throw new SemanticReleaseError(`${command} returned an error: ${error}`); } };