ryu1kn/vscode-annotator

View on GitHub
src/lib/git-annotation/git-annotation-content-generator.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import {GitService} from '../git-service';
import {GitAnnotationHtmlDirectorFactory} from './git-annotation-html-director-factory';

export class GitAnnotationContentGenerator {
    private readonly _gitService: GitService;
    private readonly _gitAnnotationHtmlDirectorFactory: GitAnnotationHtmlDirectorFactory;

    constructor(params) {
        this._gitService = params.gitService;
        this._gitAnnotationHtmlDirectorFactory = params.gitAnnotationHtmlDirectorFactory;
    }

    generate(params) {
        return this._getRepositoryRoot(params).then(repositoryRoot => {
            return this._gitService.getBlame(params.path, params.commitHash, repositoryRoot)
                .then(blameLines => {
                    const gitAnnotationHtmlDirector = this._gitAnnotationHtmlDirectorFactory.create();
                    return gitAnnotationHtmlDirector.construct(blameLines, repositoryRoot);
                });
        });
    }

    _getRepositoryRoot(params) {
        return Promise.resolve(
            params.repositoryRoot || this._gitService.getRepositoryRoot(params.path)
        );
    }

}