mirror of
https://github.com/kiegroup/git-backporting.git
synced 2025-06-28 05:33:47 +00:00
feat: add --git-client to explicitly set the type of forge (#106)
codeberg is running Forgejo and it may not be possible to infer that from the URL alone. The same is true for GitHub Enterprise Server.
This commit is contained in:
parent
646d8fe41c
commit
80a0b554f0
11 changed files with 70 additions and 3 deletions
|
@ -27,6 +27,7 @@ export default abstract class ArgsParser {
|
|||
dryRun: this.getOrDefault(args.dryRun, false),
|
||||
auth: this.getOrDefault(args.auth),
|
||||
folder: this.getOrDefault(args.folder),
|
||||
gitClient: this.getOrDefault(args.gitClient),
|
||||
gitUser: this.getOrDefault(args.gitUser),
|
||||
gitEmail: this.getOrDefault(args.gitEmail),
|
||||
title: this.getOrDefault(args.title),
|
||||
|
|
|
@ -8,6 +8,7 @@ export interface Args {
|
|||
dryRun?: boolean, // if enabled do not push anything remotely
|
||||
auth?: string, // git service auth, like github token
|
||||
folder?: string, // local folder where the repositories should be cloned
|
||||
gitClient?: string, // git client
|
||||
gitUser?: string, // local git user, default 'GitHub'
|
||||
gitEmail?: string, // local git email, default 'noreply@github.com'
|
||||
title?: string, // backport pr title, default original pr title prefixed by target branch
|
||||
|
|
|
@ -14,6 +14,7 @@ export default class CLIArgsParser extends ArgsParser {
|
|||
.option("-pr, --pull-request <pr-url>", "pull request url, e.g., https://github.com/kiegroup/git-backporting/pull/1")
|
||||
.option("-d, --dry-run", "if enabled the tool does not create any pull request nor push anything remotely")
|
||||
.option("-a, --auth <auth>", "git authentication string, if not provided fallback by looking for existing env variables like GITHUB_TOKEN")
|
||||
.option("--git-client <github|gitlab|codeberg>", "git client type, if not set it is infered from --pull-request")
|
||||
.option("-gu, --git-user <git-user>", "local git user name, default is 'GitHub'")
|
||||
.option("-ge, --git-email <git-email>", "local git user email, default is 'noreply@github.com'")
|
||||
.option("-f, --folder <folder>", "local folder where the repo will be checked out, e.g., /tmp/folder")
|
||||
|
@ -49,6 +50,7 @@ export default class CLIArgsParser extends ArgsParser {
|
|||
pullRequest: opts.pullRequest,
|
||||
targetBranch: opts.targetBranch,
|
||||
folder: opts.folder,
|
||||
gitClient: opts.gitClient,
|
||||
gitUser: opts.gitUser,
|
||||
gitEmail: opts.gitEmail,
|
||||
title: opts.title,
|
||||
|
|
|
@ -18,6 +18,7 @@ export default class GHAArgsParser extends ArgsParser {
|
|||
pullRequest: getInput("pull-request"),
|
||||
targetBranch: getInput("target-branch"),
|
||||
folder: getOrUndefined(getInput("folder")),
|
||||
gitClient: getOrUndefined(getInput("git-client")),
|
||||
gitUser: getOrUndefined(getInput("git-user")),
|
||||
gitEmail: getOrUndefined(getInput("git-email")),
|
||||
title: getOrUndefined(getInput("title")),
|
||||
|
|
|
@ -60,7 +60,12 @@ export default class Runner {
|
|||
}
|
||||
|
||||
// 2. init git service
|
||||
const gitClientType: GitClientType = inferGitClient(args.pullRequest);
|
||||
let gitClientType: GitClientType;
|
||||
if (args.gitClient === undefined) {
|
||||
gitClientType = inferGitClient(args.pullRequest);
|
||||
} else {
|
||||
gitClientType = args.gitClient as GitClientType;
|
||||
}
|
||||
// the api version is ignored in case of github
|
||||
const apiUrl = inferGitApiUrl(args.pullRequest, gitClientType === GitClientType.CODEBERG ? "v1" : undefined);
|
||||
const token = this.fetchToken(args, gitClientType);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue