import * as Promise from 'bluebird' import ChecksumCalculator from '../src/ChecksumCalculator' import CobaltFilesHandler from '../src/CobaltFilesHandler' import PresentationFileChecksums from '../src/PresentationFileChecksums' import PresentationFileDiff from '../src/PresentationFileDiff' export default class PresentationChecksums { constructor(private checksumCalculator: ChecksumCalculator, private cobaltFilesHandler: CobaltFilesHandler) {} public findDiff(dir: string): Promise { return this.getChecksums(dir) .then(this.makeDiff); } public getChecksums(dir: string): Promise { return Promise.all([ this.calculateFilesChecksums(dir), this.readChecksums() ]).then(([currentChecksums, previousChecksums]) => ({ previousChecksums, currentChecksums })) } public calculateFilesChecksums(dir: string): Promise { return this.checksumCalculator.calculate(dir); } public saveChecksums(checksums: PresentationFileChecksums): Promise { return this.cobaltFilesHandler.saveChecksums(checksums); } public createChecksums(dir: string) { return this.calculateFilesChecksums(dir) .then((checksums) => this.saveChecksums(checksums)) } private readChecksums(): Promise { return this.cobaltFilesHandler.readChecksums(); } public makeDiff(checksums: ChecksumsParams): PresentationFileDiff { const { previousChecksums, currentChecksums } = checksums; return previousChecksums.makeDiff(currentChecksums); } } class ChecksumsParams { public previousChecksums: PresentationFileChecksums; public currentChecksums: PresentationFileChecksums; }