Philipp Horstenkamp 1a139366a7
Some checks failed
Auto Maintenance Cycle / pre-commit Autoupdate (push) Failing after 32s
Reworked the index.js
2023-11-19 22:10:16 +01:00

79 lines
2.7 KiB
JavaScript

const core = require("@actions/core");
const _ = require("underscore");
async function getAndPostPullRequests() {
try {
core.info("Starting the action...");
// 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 labelsInput = core.getInput("labels");
const dueDate = core.getInput("due_date");
const milestone = core.getInput("milestone");
const token = core.getInput("token");
let branch = core.getInput("branch");
// Construct the URL for the requests
const url = `${baseUrl}/api/v1/repos/${owner}/${repo}/pulls`;
// Headers with Authorization
const headers = {
"Content-Type": "application/json",
};
core.info(`token ${token}`);
// Logic for current branch
// Prepare POST data
const postData = {
title: title,
body: body,
head: branch,
base: base_branch,
// assignees: assigneesInput ? assigneesInput.split(",") : [], // Changed to be omitted if empty
// labels: labelsInput ? labelsInput.split(",").map(Number) : [], // Changed to be omitted if empty
// due_date: dueDate || undefined, // Changed to be omitted if empty
// milestone: milestone ? parseInt(milestone, 10) : 0, // Changed to be omitted if empty
};
// Perform the GET request to check if a similar PR exists
const getResponse = await fetch(`${url}?state=open&head=${branch}`, {
headers,
});
// 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),
});
const postResponseText = await postResponse.text();
core.info(`POST request status: ${postResponse.status}`);
core.info(`POST response body: ${postResponseText}`);
if (!postResponse.ok) {
throw new Error(
`HTTP error! status on creating a new PR: ${postResponse.status}`,
);
}
const postResult = await postResponse.json();
core.info("POST request completed successfully.");
return postResult;
} catch (error) {
core.setFailed(`Action failed with error: ${error}`);
}
}
// Call the function
getAndPostPullRequests();