1- import { exec , spawn } from "child_process" ;
1+ import { spawn } from "child_process" ;
22import { log } from "../../common" ;
33import { RegistryAuthLocator } from "./registry-auth-locator" ;
4- import { registryMatches } from "./registry-matches" ;
5- import {
6- AuthConfig ,
7- ContainerRuntimeConfig ,
8- CredentialProviderGetResponse ,
9- CredentialProviderListResponse ,
10- } from "./types" ;
4+ import { AuthConfig , ContainerRuntimeConfig , CredentialProviderGetResponse } from "./types" ;
115
126export abstract class CredentialProvider implements RegistryAuthLocator {
137 abstract getName ( ) : string ;
@@ -23,45 +17,15 @@ export abstract class CredentialProvider implements RegistryAuthLocator {
2317 const programName = `docker-credential-${ credentialProviderName } ` ;
2418 log . debug ( `Executing Docker credential provider "${ programName } "` ) ;
2519
26- const credentials = await this . listCredentials ( programName ) ;
27-
28- const credentialForRegistry = Object . keys ( credentials ) . find ( ( aRegistry ) => registryMatches ( aRegistry , registry ) ) ;
29- if ( ! credentialForRegistry ) {
30- log . debug ( `No credential found for registry "${ registry } "` ) ;
31- return undefined ;
32- }
33-
3420 const response = await this . runCredentialProvider ( registry , programName ) ;
3521
3622 return {
3723 username : response . Username ,
3824 password : response . Secret ,
39- registryAddress : response . ServerURL ?? credentialForRegistry ,
25+ registryAddress : response . ServerURL ?? registry ,
4026 } ;
4127 }
4228
43- private listCredentials ( providerName : string ) : Promise < CredentialProviderListResponse > {
44- return new Promise ( ( resolve , reject ) => {
45- exec ( `${ providerName } list` , ( err , stdout , stderr ) => {
46- if ( err ) {
47- if ( stderr === "list is unimplemented\n" ) {
48- return resolve ( { } ) ;
49- }
50-
51- log . error ( `An error occurred listing credentials: ${ err } ` ) ;
52- return reject ( new Error ( "An error occurred listing credentials" ) ) ;
53- }
54- try {
55- const response = JSON . parse ( stdout ) ;
56- return resolve ( response ) ;
57- } catch ( e ) {
58- log . error ( `Unexpected response from Docker credential provider LIST command: "${ stdout } "` ) ;
59- return reject ( new Error ( "Unexpected response from Docker credential provider LIST command" ) ) ;
60- }
61- } ) ;
62- } ) ;
63- }
64-
6529 private runCredentialProvider ( registry : string , providerName : string ) : Promise < CredentialProviderGetResponse > {
6630 return new Promise ( ( resolve , reject ) => {
6731 const sink = spawn ( providerName , [ "get" ] ) ;
0 commit comments