Used inputs

This commit is contained in:
2024-12-27 14:55:25 +01:00
parent 758107ea92
commit ff52aee7b6
7 changed files with 19901 additions and 26 deletions

43
app.ts
View File

@@ -1,10 +1,11 @@
import { spawn } from "child_process";
import { ChildProcess, SpawnOptions } from "node:child_process";
import * as core from '@actions/core';
// Ignored branches
const IGNORED_BRANCHES = ["master", "main", "dev", "release"];
const IGNORED_BRANCHES: string[] = core.getInput('branchesToIgnore', { required: false }).split(",");
const mainBranch = "dev";
const mainBranch: string = `origin/${ core.getInput('mainBranch', { required: false }) }`;
enum Action {
Rebase = 0,
@@ -27,8 +28,9 @@ interface BranchWithDependencies {
/**
* Helper function to run a Git command and capture stdout and stderr.
*/
const runGitCommand = (args: string[], options?: SpawnOptions): Promise<string> =>
new Promise((resolve, reject) => {
const runGitCommand = (args: string[], options?: SpawnOptions): Promise<string> => {
console.log(`Running git command: git ${ args.join(" ") }`);
return new Promise((resolve, reject) => {
const git: ChildProcess = spawn("git", args, { stdio: "pipe", ...options });
let stdout: string = "";
let stderr: string = "";
@@ -41,6 +43,8 @@ const runGitCommand = (args: string[], options?: SpawnOptions): Promise<string>
resolve(stdout) :
reject(new Error(`Git command failed with code ${code}: ${stderr}`)));
});
}
/**
* Fetch all remote branches.
@@ -52,11 +56,10 @@ const fetchBranches = async (): Promise<string[]> => {
return branches
.split("\n")
.map((branch) => branch.trim().replace("origin/", ""))
.filter((branch) => !IGNORED_BRANCHES.includes(branch) && branch !== "");
.map((branch) => branch.trim())
.filter((branch) => !IGNORED_BRANCHES.includes(branch.replace("origin/", "")) && branch !== "");
}
// Get the full commit history for a branch
const getCommitsForBranch = async (branch: string): Promise<Set<string>> => {
const commits = await runGitCommand(["rev-list", branch]);
@@ -173,14 +176,20 @@ const rebaseBranch = async ({
await runGitCommand([
"checkout",
branch
branch.replace("origin/", "")
]);
if(action === Action.Rebase) {
await runGitCommand([
"rebase",
onBranch
]);
]).catch(async error => {
console.error(error);
await runGitCommand([
"rebase",
"--abort"
])
});
} else if(action === Action.Reset) {
await runGitCommand([
"reset",
@@ -195,11 +204,26 @@ const rebaseBranch = async ({
]);
}
const setupAutoRebaseGit = async () => {
await runGitCommand([
"config",
"user.email",
"auto-rebase@skydust.fr"
]);
await runGitCommand([
"config",
"user.name",
"Auto Rebase"
]);
}
/**
* Main function to execute the workflow.
*/
const main = async (): Promise<void> => {
try {
await setupAutoRebaseGit();
// Step 1: Fetch branches
const branches: string[] = (await fetchBranches());
branches.push(mainBranch)
@@ -219,6 +243,7 @@ const main = async (): Promise<void> => {
}
} catch (error) {
console.error("Error during workflow execution:", error.message);
process.exit(1);
}
}