@@ -19,6 +19,7 @@ export class UpdateController extends UpdateControllerBase implements IUpdateCon
1919 static readonly backupFolder : string = ".update_backup" ;
2020 static readonly updateFailMessage : string = "Could not update the project!" ;
2121 static readonly backupFailMessage : string = "Could not backup project folders!" ;
22+ static readonly failedToGetTemplateManifestMessage = "Failed to get template information for the specified version. Original error: %s" ;
2223
2324 constructor (
2425 protected $fs : IFileSystem ,
@@ -29,6 +30,7 @@ export class UpdateController extends UpdateControllerBase implements IUpdateCon
2930 private $devicePlatformsConstants : Mobile . IDevicePlatformsConstants ,
3031 private $addPlatformService : IAddPlatformService ,
3132 private $logger : ILogger ,
33+ private $errors : IErrors ,
3234 private $pluginsService : IPluginsService ,
3335 protected $pacoteService : IPacoteService ,
3436 private $projectDataService : IProjectDataService ) {
@@ -58,8 +60,7 @@ export class UpdateController extends UpdateControllerBase implements IUpdateCon
5860
5961 public async shouldUpdate ( { projectDir, version } : { projectDir : string , version ?: string } ) : Promise < boolean > {
6062 const projectData = this . $projectDataService . getProjectData ( projectDir ) ;
61- const templateName = this . getTemplateName ( projectData ) ;
62- const templateManifest = await this . getPackageManifest ( templateName , version ) ;
63+ const templateManifest = await this . getTemplateManifest ( projectData , version ) ;
6364 const dependencies = this . getUpdatableDependencies ( templateManifest . dependencies ) ;
6465 const devDependencies = this . getUpdatableDependencies ( templateManifest . devDependencies ) ;
6566
@@ -92,8 +93,7 @@ export class UpdateController extends UpdateControllerBase implements IUpdateCon
9293 }
9394
9495 private async updateProject ( projectData : IProjectData , version : string ) : Promise < void > {
95- const templateName = this . getTemplateName ( projectData ) ;
96- const templateManifest = await this . getPackageManifest ( templateName , version ) ;
96+ const templateManifest = await this . getTemplateManifest ( projectData , version ) ;
9797 const dependencies = this . getUpdatableDependencies ( templateManifest . dependencies ) ;
9898 const devDependencies = this . getUpdatableDependencies ( templateManifest . devDependencies ) ;
9999
@@ -208,6 +208,19 @@ export class UpdateController extends UpdateControllerBase implements IUpdateCon
208208
209209 return template ;
210210 }
211+
212+ private async getTemplateManifest ( projectData : IProjectData , version : string ) : Promise < any > {
213+ let templateManifest ;
214+ const templateName = this . getTemplateName ( projectData ) ;
215+ version = version || await this . $packageInstallationManager . getLatestCompatibleVersionSafe ( templateName ) ;
216+ try {
217+ templateManifest = await this . getPackageManifest ( templateName , version ) ;
218+ } catch ( err ) {
219+ this . $errors . fail ( UpdateController . failedToGetTemplateManifestMessage , err . message ) ;
220+ }
221+
222+ return templateManifest ;
223+ }
211224}
212225
213226$injector . register ( "updateController" , UpdateController ) ;
0 commit comments