review-copilot
Version:
ReviewCopilot - AI-powered code review assistant with customizable prompts
50 lines (49 loc) • 1.84 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileContentProviderFactory = exports.GitPlatformFileContentProvider = exports.LocalFileContentProvider = void 0;
const fs_1 = __importDefault(require("fs"));
class LocalFileContentProvider {
async getFileContent(filePath) {
try {
return fs_1.default.readFileSync(filePath, 'utf8');
}
catch (error) {
console.error('Error reading local file:', error);
return null;
}
}
}
exports.LocalFileContentProvider = LocalFileContentProvider;
class GitPlatformFileContentProvider {
constructor(gitService) {
this.gitService = gitService;
}
async getFileContent(filePath, context) {
if (!context?.owner || !context?.repo || !context?.pullNumber) {
throw new Error('Missing required context for Git platform file content retrieval');
}
return this.gitService.getFileContent({
owner: context.owner,
repo: context.repo,
filePath,
pullNumber: context.pullNumber,
});
}
}
exports.GitPlatformFileContentProvider = GitPlatformFileContentProvider;
class FileContentProviderFactory {
static createProvider(gitService) {
if (process.env.GITHUB_ACTIONS === 'true' ||
process.env.GITLAB_CI === 'true') {
if (!gitService) {
throw new Error('Git service is required for CI environment');
}
return new GitPlatformFileContentProvider(gitService);
}
return new LocalFileContentProvider();
}
}
exports.FileContentProviderFactory = FileContentProviderFactory;