mirror of
https://code.forgejo.org/actions/git-backporting.git
synced 2025-02-23 02:55:43 -05:00
refactor: updated logging messages (#65)
This commit is contained in:
parent
e29dae5073
commit
a8db0755a8
18 changed files with 88 additions and 85 deletions
53
dist/cli/index.js
vendored
53
dist/cli/index.js
vendored
|
@ -256,11 +256,11 @@ class ConfigsParser {
|
||||||
// apply validation, throw errors if something is wrong
|
// apply validation, throw errors if something is wrong
|
||||||
// if pr is opened check if the there exists one single commit
|
// if pr is opened check if the there exists one single commit
|
||||||
if (configs.originalPullRequest.state == "open") {
|
if (configs.originalPullRequest.state == "open") {
|
||||||
this.logger.warn("Trying to backport an open pull request!");
|
this.logger.warn("Trying to backport an open pull request");
|
||||||
}
|
}
|
||||||
// if PR is closed and not merged log a warning
|
// if PR is closed and not merged throw an error
|
||||||
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
|
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
|
||||||
throw new Error("Provided pull request is closed and not merged!");
|
throw new Error("Provided pull request is closed and not merged");
|
||||||
}
|
}
|
||||||
return Promise.resolve(configs);
|
return Promise.resolve(configs);
|
||||||
}
|
}
|
||||||
|
@ -412,7 +412,7 @@ class GitCLIService {
|
||||||
* @param branch branch which should be cloned
|
* @param branch branch which should be cloned
|
||||||
*/
|
*/
|
||||||
async clone(from, to, branch) {
|
async clone(from, to, branch) {
|
||||||
this.logger.info(`Cloning repository ${from} to ${to}.`);
|
this.logger.info(`Cloning repository ${from} to ${to}`);
|
||||||
if (!fs_1.default.existsSync(to)) {
|
if (!fs_1.default.existsSync(to)) {
|
||||||
await (0, simple_git_1.default)().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
|
await (0, simple_git_1.default)().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
|
||||||
}
|
}
|
||||||
|
@ -426,7 +426,7 @@ class GitCLIService {
|
||||||
* @param newBranch new branch name
|
* @param newBranch new branch name
|
||||||
*/
|
*/
|
||||||
async createLocalBranch(cwd, newBranch) {
|
async createLocalBranch(cwd, newBranch) {
|
||||||
this.logger.info(`Creating branch ${newBranch}.`);
|
this.logger.info(`Creating branch ${newBranch}`);
|
||||||
await this.git(cwd).checkoutLocalBranch(newBranch);
|
await this.git(cwd).checkoutLocalBranch(newBranch);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -436,7 +436,7 @@ class GitCLIService {
|
||||||
* @param remoteName [optional] name of the remote, by default 'fork' is used
|
* @param remoteName [optional] name of the remote, by default 'fork' is used
|
||||||
*/
|
*/
|
||||||
async addRemote(cwd, remote, remoteName = "fork") {
|
async addRemote(cwd, remote, remoteName = "fork") {
|
||||||
this.logger.info(`Adding new remote ${remote}.`);
|
this.logger.info(`Adding new remote ${remote}`);
|
||||||
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
|
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -446,7 +446,7 @@ class GitCLIService {
|
||||||
* @param remote [optional] the remote to fetch, by default origin
|
* @param remote [optional] the remote to fetch, by default origin
|
||||||
*/
|
*/
|
||||||
async fetch(cwd, branch, remote = "origin") {
|
async fetch(cwd, branch, remote = "origin") {
|
||||||
this.logger.info(`Fetching ${remote} ${branch}.`);
|
this.logger.info(`Fetching ${remote} ${branch}`);
|
||||||
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
|
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -455,7 +455,7 @@ class GitCLIService {
|
||||||
* @param sha commit sha
|
* @param sha commit sha
|
||||||
*/
|
*/
|
||||||
async cherryPick(cwd, sha, strategy = "recursive", strategyOption = "theirs") {
|
async cherryPick(cwd, sha, strategy = "recursive", strategyOption = "theirs") {
|
||||||
this.logger.info(`Cherry picking ${sha}.`);
|
this.logger.info(`Cherry picking ${sha}`);
|
||||||
const options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`, sha];
|
const options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`, sha];
|
||||||
try {
|
try {
|
||||||
await this.git(cwd).raw(options);
|
await this.git(cwd).raw(options);
|
||||||
|
@ -475,7 +475,7 @@ class GitCLIService {
|
||||||
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
|
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
|
||||||
*/
|
*/
|
||||||
async push(cwd, branch, remote = "origin", force = false) {
|
async push(cwd, branch, remote = "origin", force = false) {
|
||||||
this.logger.info(`Pushing ${branch} to ${remote}.`);
|
this.logger.info(`Pushing ${branch} to ${remote}`);
|
||||||
const options = ["--quiet"];
|
const options = ["--quiet"];
|
||||||
if (force) {
|
if (force) {
|
||||||
options.push("--force-with-lease");
|
options.push("--force-with-lease");
|
||||||
|
@ -505,9 +505,10 @@ const gitlab_client_1 = __importDefault(__nccwpck_require__(4077));
|
||||||
* Singleton git service factory class
|
* Singleton git service factory class
|
||||||
*/
|
*/
|
||||||
class GitClientFactory {
|
class GitClientFactory {
|
||||||
|
// this method assumes there already exists a singleton client instance, otherwise it will fail
|
||||||
static getClient() {
|
static getClient() {
|
||||||
if (!GitClientFactory.instance) {
|
if (!GitClientFactory.instance) {
|
||||||
throw new Error("You must call `getOrCreate` method first!");
|
throw new Error("You must call `getOrCreate` method first");
|
||||||
}
|
}
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
|
@ -518,7 +519,7 @@ class GitClientFactory {
|
||||||
*/
|
*/
|
||||||
static getOrCreate(type, authToken, apiUrl) {
|
static getOrCreate(type, authToken, apiUrl) {
|
||||||
if (GitClientFactory.instance) {
|
if (GitClientFactory.instance) {
|
||||||
GitClientFactory.logger.warn("Git service already initialized!");
|
GitClientFactory.logger.warn("Git service already initialized");
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
this.logger.debug(`Setting up ${type} client: apiUrl=${apiUrl}, token=****`);
|
this.logger.debug(`Setting up ${type} client: apiUrl=${apiUrl}, token=****`);
|
||||||
|
@ -534,8 +535,9 @@ class GitClientFactory {
|
||||||
}
|
}
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
|
// this is used for testing purposes
|
||||||
static reset() {
|
static reset() {
|
||||||
GitClientFactory.logger.warn("Resetting git service!");
|
GitClientFactory.logger.warn("Resetting git service");
|
||||||
GitClientFactory.instance = undefined;
|
GitClientFactory.instance = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -641,7 +643,7 @@ class GitHubClient {
|
||||||
return "noreply@github.com";
|
return "noreply@github.com";
|
||||||
}
|
}
|
||||||
async getPullRequest(owner, repo, prNumber, squash = true) {
|
async getPullRequest(owner, repo, prNumber, squash = true) {
|
||||||
this.logger.info(`Getting pull request ${owner}/${repo}/${prNumber}.`);
|
this.logger.debug(`Fetching pull request ${owner}/${repo}/${prNumber}`);
|
||||||
const { data } = await this.octokit.rest.pulls.get({
|
const { data } = await this.octokit.rest.pulls.get({
|
||||||
owner: owner,
|
owner: owner,
|
||||||
repo: repo,
|
repo: repo,
|
||||||
|
@ -670,7 +672,7 @@ class GitHubClient {
|
||||||
}
|
}
|
||||||
// WRITE
|
// WRITE
|
||||||
async createPullRequest(backport) {
|
async createPullRequest(backport) {
|
||||||
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
|
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
const { data } = await this.octokit.pulls.create({
|
const { data } = await this.octokit.pulls.create({
|
||||||
owner: backport.owner,
|
owner: backport.owner,
|
||||||
|
@ -809,7 +811,6 @@ const rest_1 = __nccwpck_require__(5375);
|
||||||
class OctokitFactory {
|
class OctokitFactory {
|
||||||
static getOctokit(token, apiUrl) {
|
static getOctokit(token, apiUrl) {
|
||||||
if (!OctokitFactory.octokit) {
|
if (!OctokitFactory.octokit) {
|
||||||
OctokitFactory.logger.info("Creating octokit instance.");
|
|
||||||
OctokitFactory.octokit = new rest_1.Octokit({
|
OctokitFactory.octokit = new rest_1.Octokit({
|
||||||
auth: token,
|
auth: token,
|
||||||
userAgent: "kiegroup/git-backporting",
|
userAgent: "kiegroup/git-backporting",
|
||||||
|
@ -885,7 +886,7 @@ class GitLabClient {
|
||||||
}
|
}
|
||||||
// WRITE
|
// WRITE
|
||||||
async createPullRequest(backport) {
|
async createPullRequest(backport) {
|
||||||
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
|
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
const projectId = this.getProjectId(backport.owner, backport.repo);
|
const projectId = this.getProjectId(backport.owner, backport.repo);
|
||||||
const { data } = await this.client.post(`/projects/${projectId}/merge_requests`, {
|
const { data } = await this.client.post(`/projects/${projectId}/merge_requests`, {
|
||||||
|
@ -1075,21 +1076,21 @@ class ConsoleLoggerService {
|
||||||
this.verbose = verbose;
|
this.verbose = verbose;
|
||||||
}
|
}
|
||||||
trace(message) {
|
trace(message) {
|
||||||
this.logger.log("[TRACE]", message);
|
this.logger.log("TRACE", message);
|
||||||
}
|
}
|
||||||
debug(message) {
|
debug(message) {
|
||||||
if (this.verbose) {
|
if (this.verbose) {
|
||||||
this.logger.log("[DEBUG]", message);
|
this.logger.log("DEBUG", message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
info(message) {
|
info(message) {
|
||||||
this.logger.log("[INFO]", message);
|
this.logger.log("INFO", message);
|
||||||
}
|
}
|
||||||
warn(message) {
|
warn(message) {
|
||||||
this.logger.log("[WARN]", message);
|
this.logger.log("WARN", message);
|
||||||
}
|
}
|
||||||
error(message) {
|
error(message) {
|
||||||
this.logger.log("[ERROR]", message);
|
this.logger.log("ERROR", message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports["default"] = ConsoleLoggerService;
|
exports["default"] = ConsoleLoggerService;
|
||||||
|
@ -1135,7 +1136,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
class Logger {
|
class Logger {
|
||||||
log(prefix, ...str) {
|
log(prefix, ...str) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log.apply(console, [prefix, ...str]);
|
console.log.apply(console, [`[${prefix.padEnd(5)}]`, ...str]);
|
||||||
}
|
}
|
||||||
emptyLine() {
|
emptyLine() {
|
||||||
this.log("", "");
|
this.log("", "");
|
||||||
|
@ -1175,12 +1176,12 @@ class Runner {
|
||||||
async run() {
|
async run() {
|
||||||
try {
|
try {
|
||||||
await this.execute();
|
await this.execute();
|
||||||
this.logger.info("Process succeeded!");
|
this.logger.info("Process succeeded");
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
this.logger.error(`${error}`);
|
this.logger.error(`${error}`);
|
||||||
this.logger.info("Process failed!");
|
this.logger.info("Process failed");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1191,7 +1192,7 @@ class Runner {
|
||||||
// 1. parse args
|
// 1. parse args
|
||||||
const args = this.argsParser.parse();
|
const args = this.argsParser.parse();
|
||||||
if (args.dryRun) {
|
if (args.dryRun) {
|
||||||
this.logger.warn("Dry run enabled!");
|
this.logger.warn("Dry run enabled");
|
||||||
}
|
}
|
||||||
// 2. init git service
|
// 2. init git service
|
||||||
const gitClientType = (0, git_util_1.inferGitClient)(args.pullRequest);
|
const gitClientType = (0, git_util_1.inferGitClient)(args.pullRequest);
|
||||||
|
@ -1252,7 +1253,7 @@ class Runner {
|
||||||
this.logger.info(`Pull request created: ${prUrl}`);
|
this.logger.info(`Pull request created: ${prUrl}`);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.logger.warn("Pull request creation and remote push skipped!");
|
this.logger.warn("Pull request creation and remote push skipped");
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
53
dist/gha/index.js
vendored
53
dist/gha/index.js
vendored
|
@ -227,11 +227,11 @@ class ConfigsParser {
|
||||||
// apply validation, throw errors if something is wrong
|
// apply validation, throw errors if something is wrong
|
||||||
// if pr is opened check if the there exists one single commit
|
// if pr is opened check if the there exists one single commit
|
||||||
if (configs.originalPullRequest.state == "open") {
|
if (configs.originalPullRequest.state == "open") {
|
||||||
this.logger.warn("Trying to backport an open pull request!");
|
this.logger.warn("Trying to backport an open pull request");
|
||||||
}
|
}
|
||||||
// if PR is closed and not merged log a warning
|
// if PR is closed and not merged throw an error
|
||||||
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
|
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
|
||||||
throw new Error("Provided pull request is closed and not merged!");
|
throw new Error("Provided pull request is closed and not merged");
|
||||||
}
|
}
|
||||||
return Promise.resolve(configs);
|
return Promise.resolve(configs);
|
||||||
}
|
}
|
||||||
|
@ -383,7 +383,7 @@ class GitCLIService {
|
||||||
* @param branch branch which should be cloned
|
* @param branch branch which should be cloned
|
||||||
*/
|
*/
|
||||||
async clone(from, to, branch) {
|
async clone(from, to, branch) {
|
||||||
this.logger.info(`Cloning repository ${from} to ${to}.`);
|
this.logger.info(`Cloning repository ${from} to ${to}`);
|
||||||
if (!fs_1.default.existsSync(to)) {
|
if (!fs_1.default.existsSync(to)) {
|
||||||
await (0, simple_git_1.default)().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
|
await (0, simple_git_1.default)().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
|
||||||
}
|
}
|
||||||
|
@ -397,7 +397,7 @@ class GitCLIService {
|
||||||
* @param newBranch new branch name
|
* @param newBranch new branch name
|
||||||
*/
|
*/
|
||||||
async createLocalBranch(cwd, newBranch) {
|
async createLocalBranch(cwd, newBranch) {
|
||||||
this.logger.info(`Creating branch ${newBranch}.`);
|
this.logger.info(`Creating branch ${newBranch}`);
|
||||||
await this.git(cwd).checkoutLocalBranch(newBranch);
|
await this.git(cwd).checkoutLocalBranch(newBranch);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -407,7 +407,7 @@ class GitCLIService {
|
||||||
* @param remoteName [optional] name of the remote, by default 'fork' is used
|
* @param remoteName [optional] name of the remote, by default 'fork' is used
|
||||||
*/
|
*/
|
||||||
async addRemote(cwd, remote, remoteName = "fork") {
|
async addRemote(cwd, remote, remoteName = "fork") {
|
||||||
this.logger.info(`Adding new remote ${remote}.`);
|
this.logger.info(`Adding new remote ${remote}`);
|
||||||
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
|
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -417,7 +417,7 @@ class GitCLIService {
|
||||||
* @param remote [optional] the remote to fetch, by default origin
|
* @param remote [optional] the remote to fetch, by default origin
|
||||||
*/
|
*/
|
||||||
async fetch(cwd, branch, remote = "origin") {
|
async fetch(cwd, branch, remote = "origin") {
|
||||||
this.logger.info(`Fetching ${remote} ${branch}.`);
|
this.logger.info(`Fetching ${remote} ${branch}`);
|
||||||
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
|
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -426,7 +426,7 @@ class GitCLIService {
|
||||||
* @param sha commit sha
|
* @param sha commit sha
|
||||||
*/
|
*/
|
||||||
async cherryPick(cwd, sha, strategy = "recursive", strategyOption = "theirs") {
|
async cherryPick(cwd, sha, strategy = "recursive", strategyOption = "theirs") {
|
||||||
this.logger.info(`Cherry picking ${sha}.`);
|
this.logger.info(`Cherry picking ${sha}`);
|
||||||
const options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`, sha];
|
const options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`, sha];
|
||||||
try {
|
try {
|
||||||
await this.git(cwd).raw(options);
|
await this.git(cwd).raw(options);
|
||||||
|
@ -446,7 +446,7 @@ class GitCLIService {
|
||||||
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
|
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
|
||||||
*/
|
*/
|
||||||
async push(cwd, branch, remote = "origin", force = false) {
|
async push(cwd, branch, remote = "origin", force = false) {
|
||||||
this.logger.info(`Pushing ${branch} to ${remote}.`);
|
this.logger.info(`Pushing ${branch} to ${remote}`);
|
||||||
const options = ["--quiet"];
|
const options = ["--quiet"];
|
||||||
if (force) {
|
if (force) {
|
||||||
options.push("--force-with-lease");
|
options.push("--force-with-lease");
|
||||||
|
@ -476,9 +476,10 @@ const gitlab_client_1 = __importDefault(__nccwpck_require__(4077));
|
||||||
* Singleton git service factory class
|
* Singleton git service factory class
|
||||||
*/
|
*/
|
||||||
class GitClientFactory {
|
class GitClientFactory {
|
||||||
|
// this method assumes there already exists a singleton client instance, otherwise it will fail
|
||||||
static getClient() {
|
static getClient() {
|
||||||
if (!GitClientFactory.instance) {
|
if (!GitClientFactory.instance) {
|
||||||
throw new Error("You must call `getOrCreate` method first!");
|
throw new Error("You must call `getOrCreate` method first");
|
||||||
}
|
}
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
|
@ -489,7 +490,7 @@ class GitClientFactory {
|
||||||
*/
|
*/
|
||||||
static getOrCreate(type, authToken, apiUrl) {
|
static getOrCreate(type, authToken, apiUrl) {
|
||||||
if (GitClientFactory.instance) {
|
if (GitClientFactory.instance) {
|
||||||
GitClientFactory.logger.warn("Git service already initialized!");
|
GitClientFactory.logger.warn("Git service already initialized");
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
this.logger.debug(`Setting up ${type} client: apiUrl=${apiUrl}, token=****`);
|
this.logger.debug(`Setting up ${type} client: apiUrl=${apiUrl}, token=****`);
|
||||||
|
@ -505,8 +506,9 @@ class GitClientFactory {
|
||||||
}
|
}
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
|
// this is used for testing purposes
|
||||||
static reset() {
|
static reset() {
|
||||||
GitClientFactory.logger.warn("Resetting git service!");
|
GitClientFactory.logger.warn("Resetting git service");
|
||||||
GitClientFactory.instance = undefined;
|
GitClientFactory.instance = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -612,7 +614,7 @@ class GitHubClient {
|
||||||
return "noreply@github.com";
|
return "noreply@github.com";
|
||||||
}
|
}
|
||||||
async getPullRequest(owner, repo, prNumber, squash = true) {
|
async getPullRequest(owner, repo, prNumber, squash = true) {
|
||||||
this.logger.info(`Getting pull request ${owner}/${repo}/${prNumber}.`);
|
this.logger.debug(`Fetching pull request ${owner}/${repo}/${prNumber}`);
|
||||||
const { data } = await this.octokit.rest.pulls.get({
|
const { data } = await this.octokit.rest.pulls.get({
|
||||||
owner: owner,
|
owner: owner,
|
||||||
repo: repo,
|
repo: repo,
|
||||||
|
@ -641,7 +643,7 @@ class GitHubClient {
|
||||||
}
|
}
|
||||||
// WRITE
|
// WRITE
|
||||||
async createPullRequest(backport) {
|
async createPullRequest(backport) {
|
||||||
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
|
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
const { data } = await this.octokit.pulls.create({
|
const { data } = await this.octokit.pulls.create({
|
||||||
owner: backport.owner,
|
owner: backport.owner,
|
||||||
|
@ -780,7 +782,6 @@ const rest_1 = __nccwpck_require__(5375);
|
||||||
class OctokitFactory {
|
class OctokitFactory {
|
||||||
static getOctokit(token, apiUrl) {
|
static getOctokit(token, apiUrl) {
|
||||||
if (!OctokitFactory.octokit) {
|
if (!OctokitFactory.octokit) {
|
||||||
OctokitFactory.logger.info("Creating octokit instance.");
|
|
||||||
OctokitFactory.octokit = new rest_1.Octokit({
|
OctokitFactory.octokit = new rest_1.Octokit({
|
||||||
auth: token,
|
auth: token,
|
||||||
userAgent: "kiegroup/git-backporting",
|
userAgent: "kiegroup/git-backporting",
|
||||||
|
@ -856,7 +857,7 @@ class GitLabClient {
|
||||||
}
|
}
|
||||||
// WRITE
|
// WRITE
|
||||||
async createPullRequest(backport) {
|
async createPullRequest(backport) {
|
||||||
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
|
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
const projectId = this.getProjectId(backport.owner, backport.repo);
|
const projectId = this.getProjectId(backport.owner, backport.repo);
|
||||||
const { data } = await this.client.post(`/projects/${projectId}/merge_requests`, {
|
const { data } = await this.client.post(`/projects/${projectId}/merge_requests`, {
|
||||||
|
@ -1046,21 +1047,21 @@ class ConsoleLoggerService {
|
||||||
this.verbose = verbose;
|
this.verbose = verbose;
|
||||||
}
|
}
|
||||||
trace(message) {
|
trace(message) {
|
||||||
this.logger.log("[TRACE]", message);
|
this.logger.log("TRACE", message);
|
||||||
}
|
}
|
||||||
debug(message) {
|
debug(message) {
|
||||||
if (this.verbose) {
|
if (this.verbose) {
|
||||||
this.logger.log("[DEBUG]", message);
|
this.logger.log("DEBUG", message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
info(message) {
|
info(message) {
|
||||||
this.logger.log("[INFO]", message);
|
this.logger.log("INFO", message);
|
||||||
}
|
}
|
||||||
warn(message) {
|
warn(message) {
|
||||||
this.logger.log("[WARN]", message);
|
this.logger.log("WARN", message);
|
||||||
}
|
}
|
||||||
error(message) {
|
error(message) {
|
||||||
this.logger.log("[ERROR]", message);
|
this.logger.log("ERROR", message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports["default"] = ConsoleLoggerService;
|
exports["default"] = ConsoleLoggerService;
|
||||||
|
@ -1106,7 +1107,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
class Logger {
|
class Logger {
|
||||||
log(prefix, ...str) {
|
log(prefix, ...str) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log.apply(console, [prefix, ...str]);
|
console.log.apply(console, [`[${prefix.padEnd(5)}]`, ...str]);
|
||||||
}
|
}
|
||||||
emptyLine() {
|
emptyLine() {
|
||||||
this.log("", "");
|
this.log("", "");
|
||||||
|
@ -1146,12 +1147,12 @@ class Runner {
|
||||||
async run() {
|
async run() {
|
||||||
try {
|
try {
|
||||||
await this.execute();
|
await this.execute();
|
||||||
this.logger.info("Process succeeded!");
|
this.logger.info("Process succeeded");
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
this.logger.error(`${error}`);
|
this.logger.error(`${error}`);
|
||||||
this.logger.info("Process failed!");
|
this.logger.info("Process failed");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1162,7 +1163,7 @@ class Runner {
|
||||||
// 1. parse args
|
// 1. parse args
|
||||||
const args = this.argsParser.parse();
|
const args = this.argsParser.parse();
|
||||||
if (args.dryRun) {
|
if (args.dryRun) {
|
||||||
this.logger.warn("Dry run enabled!");
|
this.logger.warn("Dry run enabled");
|
||||||
}
|
}
|
||||||
// 2. init git service
|
// 2. init git service
|
||||||
const gitClientType = (0, git_util_1.inferGitClient)(args.pullRequest);
|
const gitClientType = (0, git_util_1.inferGitClient)(args.pullRequest);
|
||||||
|
@ -1223,7 +1224,7 @@ class Runner {
|
||||||
this.logger.info(`Pull request created: ${prUrl}`);
|
this.logger.info(`Pull request created: ${prUrl}`);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.logger.warn("Pull request creation and remote push skipped!");
|
this.logger.warn("Pull request creation and remote push skipped");
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,12 +24,12 @@ import LoggerServiceFactory from "../logger/logger-service-factory";
|
||||||
|
|
||||||
// if pr is opened check if the there exists one single commit
|
// if pr is opened check if the there exists one single commit
|
||||||
if (configs.originalPullRequest.state == "open") {
|
if (configs.originalPullRequest.state == "open") {
|
||||||
this.logger.warn("Trying to backport an open pull request!");
|
this.logger.warn("Trying to backport an open pull request");
|
||||||
}
|
}
|
||||||
|
|
||||||
// if PR is closed and not merged log a warning
|
// if PR is closed and not merged throw an error
|
||||||
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
|
if (configs.originalPullRequest.state == "closed" && !configs.originalPullRequest.merged) {
|
||||||
throw new Error("Provided pull request is closed and not merged!");
|
throw new Error("Provided pull request is closed and not merged");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Promise.resolve(configs);
|
return Promise.resolve(configs);
|
||||||
|
|
|
@ -60,7 +60,7 @@ export default class GitCLIService {
|
||||||
* @param branch branch which should be cloned
|
* @param branch branch which should be cloned
|
||||||
*/
|
*/
|
||||||
async clone(from: string, to: string, branch: string): Promise<void> {
|
async clone(from: string, to: string, branch: string): Promise<void> {
|
||||||
this.logger.info(`Cloning repository ${from} to ${to}.`);
|
this.logger.info(`Cloning repository ${from} to ${to}`);
|
||||||
if (!fs.existsSync(to)) {
|
if (!fs.existsSync(to)) {
|
||||||
await simpleGit().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
|
await simpleGit().clone(this.remoteWithAuth(from), to, ["--quiet", "--shallow-submodules", "--no-tags", "--branch", branch]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -74,7 +74,7 @@ export default class GitCLIService {
|
||||||
* @param newBranch new branch name
|
* @param newBranch new branch name
|
||||||
*/
|
*/
|
||||||
async createLocalBranch(cwd: string, newBranch: string): Promise<void> {
|
async createLocalBranch(cwd: string, newBranch: string): Promise<void> {
|
||||||
this.logger.info(`Creating branch ${newBranch}.`);
|
this.logger.info(`Creating branch ${newBranch}`);
|
||||||
await this.git(cwd).checkoutLocalBranch(newBranch);
|
await this.git(cwd).checkoutLocalBranch(newBranch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ export default class GitCLIService {
|
||||||
* @param remoteName [optional] name of the remote, by default 'fork' is used
|
* @param remoteName [optional] name of the remote, by default 'fork' is used
|
||||||
*/
|
*/
|
||||||
async addRemote(cwd: string, remote: string, remoteName = "fork"): Promise<void> {
|
async addRemote(cwd: string, remote: string, remoteName = "fork"): Promise<void> {
|
||||||
this.logger.info(`Adding new remote ${remote}.`);
|
this.logger.info(`Adding new remote ${remote}`);
|
||||||
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
|
await this.git(cwd).addRemote(remoteName, this.remoteWithAuth(remote));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ export default class GitCLIService {
|
||||||
* @param remote [optional] the remote to fetch, by default origin
|
* @param remote [optional] the remote to fetch, by default origin
|
||||||
*/
|
*/
|
||||||
async fetch(cwd: string, branch: string, remote = "origin"): Promise<void> {
|
async fetch(cwd: string, branch: string, remote = "origin"): Promise<void> {
|
||||||
this.logger.info(`Fetching ${remote} ${branch}.`);
|
this.logger.info(`Fetching ${remote} ${branch}`);
|
||||||
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
|
await this.git(cwd).fetch(remote, branch, ["--quiet"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ export default class GitCLIService {
|
||||||
* @param sha commit sha
|
* @param sha commit sha
|
||||||
*/
|
*/
|
||||||
async cherryPick(cwd: string, sha: string, strategy = "recursive", strategyOption = "theirs"): Promise<void> {
|
async cherryPick(cwd: string, sha: string, strategy = "recursive", strategyOption = "theirs"): Promise<void> {
|
||||||
this.logger.info(`Cherry picking ${sha}.`);
|
this.logger.info(`Cherry picking ${sha}`);
|
||||||
|
|
||||||
const options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`, sha];
|
const options = ["cherry-pick", "-m", "1", `--strategy=${strategy}`, `--strategy-option=${strategyOption}`, sha];
|
||||||
try {
|
try {
|
||||||
|
@ -128,7 +128,7 @@ export default class GitCLIService {
|
||||||
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
|
* @param remote [optional] remote to which the branch should be pushed to, by default 'origin'
|
||||||
*/
|
*/
|
||||||
async push(cwd: string, branch: string, remote = "origin", force = false): Promise<void> {
|
async push(cwd: string, branch: string, remote = "origin", force = false): Promise<void> {
|
||||||
this.logger.info(`Pushing ${branch} to ${remote}.`);
|
this.logger.info(`Pushing ${branch} to ${remote}`);
|
||||||
|
|
||||||
const options = ["--quiet"];
|
const options = ["--quiet"];
|
||||||
if (force) {
|
if (force) {
|
||||||
|
|
|
@ -13,9 +13,10 @@ export default class GitClientFactory {
|
||||||
private static logger: LoggerService = LoggerServiceFactory.getLogger();
|
private static logger: LoggerService = LoggerServiceFactory.getLogger();
|
||||||
private static instance?: GitClient;
|
private static instance?: GitClient;
|
||||||
|
|
||||||
|
// this method assumes there already exists a singleton client instance, otherwise it will fail
|
||||||
public static getClient(): GitClient {
|
public static getClient(): GitClient {
|
||||||
if (!GitClientFactory.instance) {
|
if (!GitClientFactory.instance) {
|
||||||
throw new Error("You must call `getOrCreate` method first!");
|
throw new Error("You must call `getOrCreate` method first");
|
||||||
}
|
}
|
||||||
|
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
|
@ -29,7 +30,7 @@ export default class GitClientFactory {
|
||||||
public static getOrCreate(type: GitClientType, authToken: string | undefined, apiUrl: string): GitClient {
|
public static getOrCreate(type: GitClientType, authToken: string | undefined, apiUrl: string): GitClient {
|
||||||
|
|
||||||
if (GitClientFactory.instance) {
|
if (GitClientFactory.instance) {
|
||||||
GitClientFactory.logger.warn("Git service already initialized!");
|
GitClientFactory.logger.warn("Git service already initialized");
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,8 +50,9 @@ export default class GitClientFactory {
|
||||||
return GitClientFactory.instance;
|
return GitClientFactory.instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this is used for testing purposes
|
||||||
public static reset(): void {
|
public static reset(): void {
|
||||||
GitClientFactory.logger.warn("Resetting git service!");
|
GitClientFactory.logger.warn("Resetting git service");
|
||||||
GitClientFactory.instance = undefined;
|
GitClientFactory.instance = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -32,7 +32,7 @@ export default class GitHubClient implements GitClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
async getPullRequest(owner: string, repo: string, prNumber: number, squash = true): Promise<GitPullRequest> {
|
async getPullRequest(owner: string, repo: string, prNumber: number, squash = true): Promise<GitPullRequest> {
|
||||||
this.logger.info(`Getting pull request ${owner}/${repo}/${prNumber}.`);
|
this.logger.debug(`Fetching pull request ${owner}/${repo}/${prNumber}`);
|
||||||
const { data } = await this.octokit.rest.pulls.get({
|
const { data } = await this.octokit.rest.pulls.get({
|
||||||
owner: owner,
|
owner: owner,
|
||||||
repo: repo,
|
repo: repo,
|
||||||
|
@ -66,7 +66,7 @@ export default class GitHubClient implements GitClient {
|
||||||
// WRITE
|
// WRITE
|
||||||
|
|
||||||
async createPullRequest(backport: BackportPullRequest): Promise<string> {
|
async createPullRequest(backport: BackportPullRequest): Promise<string> {
|
||||||
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
|
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
|
|
||||||
const { data } = await this.octokit.pulls.create({
|
const { data } = await this.octokit.pulls.create({
|
||||||
|
|
|
@ -12,7 +12,6 @@ export default class OctokitFactory {
|
||||||
|
|
||||||
public static getOctokit(token: string | undefined, apiUrl: string): Octokit {
|
public static getOctokit(token: string | undefined, apiUrl: string): Octokit {
|
||||||
if (!OctokitFactory.octokit) {
|
if (!OctokitFactory.octokit) {
|
||||||
OctokitFactory.logger.info("Creating octokit instance.");
|
|
||||||
OctokitFactory.octokit = new Octokit({
|
OctokitFactory.octokit = new Octokit({
|
||||||
auth: token,
|
auth: token,
|
||||||
userAgent: "kiegroup/git-backporting",
|
userAgent: "kiegroup/git-backporting",
|
||||||
|
|
|
@ -69,7 +69,7 @@ export default class GitLabClient implements GitClient {
|
||||||
// WRITE
|
// WRITE
|
||||||
|
|
||||||
async createPullRequest(backport: BackportPullRequest): Promise<string> {
|
async createPullRequest(backport: BackportPullRequest): Promise<string> {
|
||||||
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}.`);
|
this.logger.info(`Creating pull request ${backport.head} -> ${backport.base}`);
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
|
|
||||||
const projectId = this.getProjectId(backport.owner, backport.repo);
|
const projectId = this.getProjectId(backport.owner, backport.repo);
|
||||||
|
|
|
@ -12,25 +12,25 @@ export default class ConsoleLoggerService implements LoggerService {
|
||||||
}
|
}
|
||||||
|
|
||||||
trace(message: string): void {
|
trace(message: string): void {
|
||||||
this.logger.log("[TRACE]", message);
|
this.logger.log("TRACE", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug(message: string): void {
|
debug(message: string): void {
|
||||||
if (this.verbose) {
|
if (this.verbose) {
|
||||||
this.logger.log("[DEBUG]", message);
|
this.logger.log("DEBUG", message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
info(message: string): void {
|
info(message: string): void {
|
||||||
this.logger.log("[INFO]", message);
|
this.logger.log("INFO", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
warn(message: string): void {
|
warn(message: string): void {
|
||||||
this.logger.log("[WARN]", message);
|
this.logger.log("WARN", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
error(message: string): void {
|
error(message: string): void {
|
||||||
this.logger.log("[ERROR]", message);
|
this.logger.log("ERROR", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
log(prefix: string, ...str: string[]) {
|
log(prefix: string, ...str: string[]) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log.apply(console, [prefix, ...str]);
|
console.log.apply(console, [`[${prefix.padEnd(5)}]`, ...str]);
|
||||||
}
|
}
|
||||||
|
|
||||||
emptyLine() {
|
emptyLine() {
|
||||||
|
|
|
@ -30,13 +30,13 @@ export default class Runner {
|
||||||
try {
|
try {
|
||||||
await this.execute();
|
await this.execute();
|
||||||
|
|
||||||
this.logger.info("Process succeeded!");
|
this.logger.info("Process succeeded");
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.logger.error(`${error}`);
|
this.logger.error(`${error}`);
|
||||||
|
|
||||||
this.logger.info("Process failed!");
|
this.logger.info("Process failed");
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ export default class Runner {
|
||||||
const args: Args = this.argsParser.parse();
|
const args: Args = this.argsParser.parse();
|
||||||
|
|
||||||
if (args.dryRun) {
|
if (args.dryRun) {
|
||||||
this.logger.warn("Dry run enabled!");
|
this.logger.warn("Dry run enabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. init git service
|
// 2. init git service
|
||||||
|
@ -123,7 +123,7 @@ export default class Runner {
|
||||||
this.logger.info(`Pull request created: ${prUrl}`);
|
this.logger.info(`Pull request created: ${prUrl}`);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.logger.warn("Pull request creation and remote push skipped!");
|
this.logger.warn("Pull request creation and remote push skipped");
|
||||||
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
this.logger.info(`${JSON.stringify(backport, null, 2)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,7 +247,7 @@ describe("github pull request config parser", () => {
|
||||||
inheritReviewers: true,
|
inheritReviewers: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("Provided pull request is closed and not merged!");
|
await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("Provided pull request is closed and not merged");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("override backport pr data inheriting reviewers", async () => {
|
test("override backport pr data inheriting reviewers", async () => {
|
||||||
|
|
|
@ -253,7 +253,7 @@ describe("gitlab merge request config parser", () => {
|
||||||
inheritReviewers: true,
|
inheritReviewers: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("Provided pull request is closed and not merged!");
|
await expect(() => configParser.parseAndValidate(args)).rejects.toThrow("Provided pull request is closed and not merged");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("override backport pr data inheriting reviewers", async () => {
|
test("override backport pr data inheriting reviewers", async () => {
|
||||||
|
|
|
@ -289,7 +289,7 @@ describe("cli runner", () => {
|
||||||
"https://github.com/owner/reponame/pull/6666"
|
"https://github.com/owner/reponame/pull/6666"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged!");
|
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("open pull request", async () => {
|
test("open pull request", async () => {
|
||||||
|
|
|
@ -193,7 +193,7 @@ describe("cli runner", () => {
|
||||||
"https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/3"
|
"https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/3"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged!");
|
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("merged pull request", async () => {
|
test("merged pull request", async () => {
|
||||||
|
|
|
@ -135,7 +135,7 @@ describe("gha runner", () => {
|
||||||
"pull-request": "https://github.com/owner/reponame/pull/6666"
|
"pull-request": "https://github.com/owner/reponame/pull/6666"
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged!");
|
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("open pull request", async () => {
|
test("open pull request", async () => {
|
||||||
|
|
|
@ -146,7 +146,7 @@ describe("gha runner", () => {
|
||||||
"pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/3"
|
"pull-request": "https://my.gitlab.host.com/superuser/backporting-example/-/merge_requests/3"
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged!");
|
await expect(() => runner.execute()).rejects.toThrow("Provided pull request is closed and not merged");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("merged pull request", async () => {
|
test("merged pull request", async () => {
|
||||||
|
|
|
@ -79,7 +79,7 @@ export const putAxiosMocked = async (url: string, _data?: unknown) => {
|
||||||
// GITHUB - OCTOKIT
|
// GITHUB - OCTOKIT
|
||||||
|
|
||||||
export const mockGitHubClient = (apiUrl = "https://api.github.com"): Moctokit => {
|
export const mockGitHubClient = (apiUrl = "https://api.github.com"): Moctokit => {
|
||||||
logger.debug("Setting up moctokit.");
|
logger.debug("Setting up moctokit..");
|
||||||
|
|
||||||
const mock = new Moctokit(apiUrl);
|
const mock = new Moctokit(apiUrl);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue