feat: config file as option (#42)

Fix https://github.com/lampajr/backporting/issues/37

This enhancement required a huge refactoring where all arguments
defaults have been centralized in one single place ArgsParser#parse
This commit is contained in:
Andrea Lamparelli 2023-07-05 22:11:23 +02:00 committed by GitHub
parent a88adeec35
commit 5ead31f606
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 1465 additions and 219 deletions

View file

@ -10,10 +10,10 @@ import { LocalGit } from "@bp/service/configs/configs.types";
export default class GitCLIService {
private readonly logger: LoggerService;
private readonly auth: string;
private readonly auth: string | undefined;
private readonly gitData: LocalGit;
constructor(auth: string, gitData: LocalGit) {
constructor(auth: string | undefined, gitData: LocalGit) {
this.logger = LoggerServiceFactory.getLogger();
this.auth = auth;
this.gitData = gitData;

View file

@ -26,7 +26,7 @@ export default class GitClientFactory {
* @param type git management service type
* @param authToken authentication token, like github/gitlab token
*/
public static getOrCreate(type: GitClientType, authToken: string, apiUrl: string): GitClient {
public static getOrCreate(type: GitClientType, authToken: string | undefined, apiUrl: string): GitClient {
if (GitClientFactory.instance) {
GitClientFactory.logger.warn("Git service already initialized!");

View file

@ -7,6 +7,10 @@ import { BackportPullRequest, GitPullRequest } from "@bp/service/git/git.types";
export default interface GitClient {
// READ
getDefaultGitUser(): string;
getDefaultGitEmail(): string;
/**
* Get a pull request object from the underneath git service

View file

@ -14,7 +14,7 @@ export default class GitHubClient implements GitClient {
private octokit: Octokit;
private mapper: GitHubMapper;
constructor(token: string, apiUrl: string) {
constructor(token: string | undefined, apiUrl: string) {
this.apiUrl = apiUrl;
this.logger = LoggerServiceFactory.getLogger();
this.octokit = OctokitFactory.getOctokit(token, this.apiUrl);
@ -23,6 +23,14 @@ export default class GitHubClient implements GitClient {
// READ
getDefaultGitUser(): string {
return "GitHub";
}
getDefaultGitEmail(): string {
return "noreply@github.com";
}
async getPullRequest(owner: string, repo: string, prNumber: number): Promise<GitPullRequest> {
this.logger.info(`Getting pull request ${owner}/${repo}/${prNumber}.`);
const { data } = await this.octokit.rest.pulls.get({

View file

@ -10,7 +10,7 @@ export default class OctokitFactory {
private static logger: LoggerService = LoggerServiceFactory.getLogger();
private static octokit?: Octokit;
public static getOctokit(token: string, apiUrl: string): Octokit {
public static getOctokit(token: string | undefined, apiUrl: string): Octokit {
if (!OctokitFactory.octokit) {
OctokitFactory.logger.info("Creating octokit instance.");
OctokitFactory.octokit = new Octokit({

View file

@ -14,13 +14,13 @@ export default class GitLabClient implements GitClient {
private readonly mapper: GitLabMapper;
private readonly client: Axios;
constructor(token: string, apiUrl: string, rejectUnauthorized = false) {
constructor(token: string | undefined, apiUrl: string, rejectUnauthorized = false) {
this.logger = LoggerServiceFactory.getLogger();
this.apiUrl = apiUrl;
this.client = axios.create({
baseURL: this.apiUrl,
headers: {
Authorization: `Bearer ${token}`,
Authorization: token ? `Bearer ${token}` : "",
"User-Agent": "lampajr/backporting",
},
httpsAgent: new https.Agent({
@ -30,6 +30,14 @@ export default class GitLabClient implements GitClient {
this.mapper = new GitLabMapper(this.client);
}
getDefaultGitUser(): string {
return "Gitlab";
}
getDefaultGitEmail(): string {
return "noreply@gitlab.com";
}
// READ
// example: <host>/api/v4/projects/alampare%2Fbackporting-example/merge_requests/1