Files
CodeListing/git/index.ts

37 lines
1.1 KiB
TypeScript

import { GitLoader } from './git-loader';
import { logger } from '../config/logger';
import type { AppConfiguration } from '../config/app-configuration';
export class GitService {
private readonly gitLoader: GitLoader;
constructor(config: AppConfiguration) {
logger.info('GitService initialized');
this.gitLoader = new GitLoader(config);
}
public async getRepo(branch: string = 'main'): Promise<void> {
try {
logger.info(`Cloning repo with target branch: ${branch}...`);
const cloneStartTime = Date.now();
await this.gitLoader.loadRepo();
const cloneEndTime = Date.now();
const cloneTimeSeconds = ((cloneEndTime - cloneStartTime) / 1000).toFixed(
2,
);
logger.info(`Repo cloned successfully in ${cloneTimeSeconds} seconds`);
logger.info(`Checking out branch ${branch}...`);
await this.gitLoader.checkoutBranch(branch);
logger.info('Branch checked out successfully');
} catch (e: unknown) {
logger.error('Error cloning repo:', e instanceof Error ? e.message : e);
throw new Error(`GitService: ${e}`);
}
}
}