11import * as Debug from "debug" ;
22import * as fs from "fs" ;
33import * as path from "path" ;
4+ import { getErrorMessage } from "../error-utils" ;
45
56import { Docker , DockerOptions } from "../docker" ;
67import { ImageName } from "../extractor/image" ;
@@ -34,7 +35,11 @@ function cleanupCallback(imageFolderPath: string, imageName: string) {
3435 try {
3536 fs . rmdirSync ( imageFolderPath ) ;
3637 } catch ( err ) {
37- debug ( `Can't remove folder ${ imageFolderPath } , got error ${ err . message } ` ) ;
38+ debug (
39+ `Can't remove folder ${ imageFolderPath } , got error ${ getErrorMessage (
40+ err ,
41+ ) } `,
42+ ) ;
3843 }
3944 } ;
4045}
@@ -57,8 +62,19 @@ async function pullWithDockerBinary(
5762 await docker . save ( targetImage , saveLocation ) ;
5863 return true ;
5964 } catch ( err ) {
60- debug ( `couldn't pull ${ targetImage } using docker binary: ${ err . message } ` ) ;
61- const errorMessage = err . stderr || err . message || err . toString ( ) ;
65+ debug (
66+ `couldn't pull ${ targetImage } using docker binary: ${ getErrorMessage (
67+ err ,
68+ ) } `,
69+ ) ;
70+ const stderrValue =
71+ err !== null &&
72+ typeof err === "object" &&
73+ "stderr" in ( err as object ) &&
74+ ( err as { stderr : unknown } ) . stderr ;
75+ const errorMessage = stderrValue
76+ ? String ( stderrValue )
77+ : getErrorMessage ( err ) ;
6278 handleDockerPullError ( errorMessage , platform ) ;
6379
6480 return false ;
@@ -125,7 +141,7 @@ async function pullFromContainerRegistry(
125141 platform ,
126142 ) ;
127143 } catch ( err ) {
128- handleDockerPullError ( err . message ) ;
144+ handleDockerPullError ( getErrorMessage ( err ) ) ;
129145 throw err ;
130146 }
131147}
@@ -212,7 +228,7 @@ async function getImageArchive(
212228 } catch ( error ) {
213229 debug (
214230 `${ targetImage } does not exist locally, proceeding to pull image.` ,
215- error . stack || error ,
231+ getErrorMessage ( error ) ,
216232 ) ;
217233 }
218234
@@ -369,7 +385,7 @@ function isLocalImageSameArchitecture(
369385 // Note: this is using the same flag/input pattern as the new Docker buildx: eg. linux/arm64/v8
370386 platformArchitecture = platformOption . split ( "/" ) [ 1 ] ;
371387 } catch ( error ) {
372- debug ( `Error parsing platform flag: '${ error . message } '` ) ;
388+ debug ( `Error parsing platform flag: '${ getErrorMessage ( error ) } '` ) ;
373389 return false ;
374390 }
375391
0 commit comments