From 5f3d5c1412ccb9a20ca751d45c0187340730261f Mon Sep 17 00:00:00 2001 From: Janos Hrubos <33330538+janoshrubos@users.noreply.github.com> Date: Wed, 20 Jan 2021 17:01:56 +0100 Subject: [PATCH 1/2] perf: validate update version before backup --- lib/controllers/update-controller.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/controllers/update-controller.ts b/lib/controllers/update-controller.ts index 47d64678ad..a041d05b64 100644 --- a/lib/controllers/update-controller.ts +++ b/lib/controllers/update-controller.ts @@ -88,6 +88,20 @@ export class UpdateController const projectData = this.$projectDataService.getProjectData( updateOptions.projectDir ); + + try { + for (const updatableDependency of UpdateController.updatableDependencies) { + await this.getVersionFromTag( + updatableDependency.name, + updateOptions.version + ); + } + } catch (error) { + this.$errors.fail( + `${UpdateController.updateFailMessage} Reason is: ${error.message}` + ); + } + const backupDir = path.join( updateOptions.projectDir, UpdateController.backupFolder From be91036bb748dc5c0e5fbdae55ee406304d84b99 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Wed, 27 Jan 2021 17:30:50 +0100 Subject: [PATCH 2/2] perf: no need to loop through all deps --- lib/controllers/update-controller.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/controllers/update-controller.ts b/lib/controllers/update-controller.ts index a041d05b64..40409a439c 100644 --- a/lib/controllers/update-controller.ts +++ b/lib/controllers/update-controller.ts @@ -90,12 +90,13 @@ export class UpdateController ); try { - for (const updatableDependency of UpdateController.updatableDependencies) { - await this.getVersionFromTag( - updatableDependency.name, - updateOptions.version - ); - } + // this is a preventive check to make sure the passed version exists before doing any backups, however + // the update can still fail if the specified tag doesn't exist in one of the updatableDependencies + // at this stage we only care to check a single dependency to catch invalid versions early. + await this.getVersionFromTag( + UpdateController.updatableDependencies[0].name, + updateOptions.version + ); } catch (error) { this.$errors.fail( `${UpdateController.updateFailMessage} Reason is: ${error.message}`