@@ -203,21 +203,25 @@ def parse_env_vars(env_set: Dict[str, str], app_path: Path) -> Dict[str, Any]:
203203 def parse_manifest_file (self , manifest_file : Path ) -> InstalledScoopApp :
204204 app_directory : Path = manifest_file .parent
205205 tool_name : str = app_directory .parent .name
206- with open (manifest_file ) as f :
207- manifest_data : Dict [str , Any ] = json .load (f )
208- tool_version : str = manifest_data .get ("version" , "" )
209- bin_dirs : List [Path ] = self .parse_bin_dirs (manifest_data .get ("bin" , []))
210- env_add_path : List [Path ] = self .parse_env_path_dirs (manifest_data .get ("env_add_path" , []))
211- installed_app = InstalledScoopApp (
212- name = tool_name ,
213- version = tool_version ,
214- path = app_directory ,
215- manifest_file = manifest_file ,
216- bin_dirs = bin_dirs ,
217- env_add_path = env_add_path ,
218- env_vars = self .parse_env_vars (manifest_data .get ("env_set" , {}), app_directory ),
219- )
220- return installed_app
206+ try :
207+ with open (manifest_file ) as f :
208+ manifest_data : Dict [str , Any ] = json .load (f )
209+ except json .JSONDecodeError as e :
210+ raise UserNotificationException (f"Failed to parse manifest file: { manifest_file .as_posix ()} . Error: { e } " ) from None
211+
212+ tool_version : str = manifest_data .get ("version" , "" )
213+ bin_dirs : List [Path ] = self .parse_bin_dirs (manifest_data .get ("bin" , []))
214+ env_add_path : List [Path ] = self .parse_env_path_dirs (manifest_data .get ("env_add_path" , []))
215+ installed_app = InstalledScoopApp (
216+ name = tool_name ,
217+ version = tool_version ,
218+ path = app_directory ,
219+ manifest_file = manifest_file ,
220+ bin_dirs = bin_dirs ,
221+ env_add_path = env_add_path ,
222+ env_vars = self .parse_env_vars (manifest_data .get ("env_set" , {}), app_directory ),
223+ )
224+ return installed_app
221225
222226 def get_installed_apps (self ) -> List [InstalledScoopApp ]:
223227 installed_tools : List [InstalledScoopApp ] = []
0 commit comments