gitea-act-create-pr/index.js

75 lines
2.5 KiB
JavaScript

const core = require("@actions/core");
async function getAndPostPullRequests() {
try {
// Retrieve inputs and token
const baseUrl = core.getInput("base_url") || "https://git.horstenkamp.eu";
const owner = core.getInput("owner") || process.env.GITHUB_REPOSITORY_OWNER;
const repo =
core.getInput("repo") || process.env.GITHUB_REPOSITORY.split("/")[1];
const base_branch = core.getInput("base_branch") || "main";
const title = core.getInput("title");
const body = core.getInput("body") || "";
const assigneesInput = core.getInput("assignees");
const reviewersInput = core.getInput("reviewers");
const dueDate = core.getInput("due_date");
const milestone = core.getInput("milestone");
const token = core.getInput("token");
let branch = core.getInput("branch");
if (!token || token.trim() === "") {
throw new Error("No token provided. Please provide a valid token.");
}
// Construct the URL for the requests
const url = `${baseUrl}/api/v1/repos/${owner}/${repo}/pulls`;
// Headers with Authorization
const headers = {
"Content-Type": "application/json",
accept: "application/json",
};
core.info(`token ${token}`);
// Prepare POST data
const postData = {
title: title,
body: body ? body : undefined,
head: branch,
base: base_branch,
assignees: assigneesInput ? assigneesInput.split(",") : undefined,
reviewers: reviewersInput ? reviewersInput.split(",") : undefined,
due_date: dueDate || undefined,
milestone: milestone ? parseInt(milestone, 10) : 0,
};
// Perform the POST request
core.info(`URL for POST request: ${url}`);
core.info(`POST data being sent: ${JSON.stringify(postData, null, 2)}`);
const postResponse = await fetch(`${url}?access_token=${token}`, {
method: "POST",
headers,
body: JSON.stringify(postData),
});
if (postResponse.status === 409) {
core.warning("PR between the branches already exists.");
return;
}
if (!postResponse.ok) {
throw new Error(
`HTTP error! status on creating a new PR: ${postResponse.status}`,
);
}
const postResult = await postResponse.json().url;
core.info("POST request completed successfully.");
core.info(`Created the post request under: ${postResult}`);
return postResult;
} catch (error) {
core.setFailed(`Action failed with error: ${error}`);
}
}
// Call the function
getAndPostPullRequests();