import Config from '../config/Config'; import GitlabRelease from '../shared/types/Gitlab/GitlabRelease'; import GitlabManager from '../managers/GitlabManager'; class DojoCliVersionHelper { private latestUpdate: Date | undefined; private latestVersion: string | undefined; constructor() { } private async updateVersion(): Promise<void> { const releases: Array<GitlabRelease> = await GitlabManager.getRepositoryReleases(Config.dojoCLI.repositoryId); for ( const release of releases ) { if ( !isNaN(+release.tag_name.replace('.', '')) ) { this.latestVersion = release.tag_name; this.latestUpdate = new Date(); return; } } } public async getLatestVersion(): Promise<string> { if ( !this.latestVersion || !this.latestUpdate || (new Date()).getTime() - this.latestUpdate.getTime() >= Config.dojoCLI.versionUpdatePeriodMs ) { await this.updateVersion(); } return this.latestVersion!; } } export default new DojoCliVersionHelper();