37 lines
1.1 KiB
TypeScript
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}`);
|
|
}
|
|
}
|
|
}
|