@@ -49,31 +49,36 @@ export async function installSwiftlyToolchainWithProgress(
4949 await Swiftly . installToolchain (
5050 version ,
5151 ( progressData : SwiftlyProgressData ) => {
52- if (
53- progressData . step ?. percent !== undefined &&
54- progressData . step . percent > lastProgress
55- ) {
56- const increment = progressData . step . percent - lastProgress ;
52+ if ( progressData . complete ) {
53+ // Swiftly will also verify the signature and extract the toolchain after the
54+ // "complete" message has been sent, but does not report progress for this.
55+ // Provide a suitable message in this case and reset the progress back to an
56+ // indeterminate state (0) since we don't know how long it will take.
5757 progress . report ( {
58- increment,
59- message :
60- progressData . step . text ??
61- `${ progressData . step . percent } % complete` ,
58+ message : "Verifying signature and extracting..." ,
59+ increment : - lastProgress ,
6260 } ) ;
63- lastProgress = progressData . step . percent ;
61+ return ;
6462 }
63+ if ( ! progressData . step ) {
64+ return ;
65+ }
66+ const increment = progressData . step . percent - lastProgress ;
67+ progress . report ( {
68+ increment,
69+ message :
70+ progressData . step . text ?? `${ progressData . step . percent } % complete` ,
71+ } ) ;
72+ lastProgress = progressData . step . percent ;
6573 } ,
6674 logger ,
6775 token
6876 ) ;
69-
70- progress . report ( {
71- increment : 100 - lastProgress ,
72- message : "Installation complete" ,
73- } ) ;
7477 }
7578 ) ;
7679
80+ void vscode . window . showInformationMessage ( `Successfully installed Swift ${ version } ` ) ;
81+
7782 return true ;
7883 } catch ( error ) {
7984 const errorMessage = ( error as Error ) . message ;
@@ -83,7 +88,7 @@ export async function installSwiftlyToolchainWithProgress(
8388 return false ;
8489 }
8590
86- logger ?. error ( `Failed to install Swift ${ version } : ${ error } ` ) ;
91+ logger ?. error ( new Error ( `Failed to install Swift ${ version } ` , { cause : error } ) ) ;
8792 void vscode . window . showErrorMessage ( `Failed to install Swift ${ version } : ${ error } ` ) ;
8893 return false ;
8994 }
0 commit comments