diff --git a/__tests__/aws.test.ts b/__tests__/aws.test.ts index a7e55a8..07c734c 100644 --- a/__tests__/aws.test.ts +++ b/__tests__/aws.test.ts @@ -19,11 +19,19 @@ describe('getCLI', () => { }); }); +describe('getCLICmdOutput', () => { + it('--version not empty', async () => { + const cliCmdOutput = await aws.getCLICmdOutput(['--version']); + console.log(`cliCmdOutput: ${cliCmdOutput}`); + expect(cliCmdOutput).not.toEqual(''); + }); +}); + describe('getCLIVersion', () => { it('valid', async () => { const cliVersion = await aws.getCLIVersion(); console.log(`cliVersion: ${cliVersion}`); - expect(semver.valid(cliVersion)).toBe(true); + expect(semver.valid(cliVersion)).not.toBeNull(); }); }); diff --git a/dist/index.js b/dist/index.js index ac32fdb..1e42442 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3023,13 +3023,10 @@ function loginECR(registry, username, password) { core.info(`💡 AWS ECR registry detected with ${ecrRegion} region`); process.env.AWS_ACCESS_KEY_ID = username; process.env.AWS_SECRET_ACCESS_KEY = password; - core.info(`⬇️ Retrieving docker login command through AWS CLI ${cliVersion}...`); - yield execm.exec(cliPath, ['ecr', 'get-login', '--region', ecrRegion, '--no-include-email'], true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } + core.info(`⬇️ Retrieving docker login command through AWS CLI ${cliVersion} (${cliPath})...`); + aws.getCLICmdOutput(['ecr', 'get-login', '--region', ecrRegion, '--no-include-email']).then(stdout => { core.info(`🔑 Logging into ${registry}...`); - execm.exec(res.stdout, [], true).then(res => { + execm.exec(stdout, [], true).then(res => { if (res.stderr != '' && !res.success) { throw new Error(res.stderr); } @@ -4102,7 +4099,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.getRegion = exports.parseCLIVersion = exports.getCLIVersion = exports.getCLI = exports.isECR = void 0; +exports.getRegion = exports.parseCLIVersion = exports.getCLIVersion = exports.getCLICmdOutput = exports.getCLI = exports.isECR = void 0; const semver = __importStar(__webpack_require__(383)); const io = __importStar(__webpack_require__(436)); const execm = __importStar(__webpack_require__(757)); @@ -4112,14 +4109,17 @@ exports.isECR = (registry) => __awaiter(void 0, void 0, void 0, function* () { exports.getCLI = () => __awaiter(void 0, void 0, void 0, function* () { return io.which('aws', true); }); -exports.getCLIVersion = () => __awaiter(void 0, void 0, void 0, function* () { - return execm.exec('aws', ['--version'], true).then(res => { +exports.getCLICmdOutput = (args) => __awaiter(void 0, void 0, void 0, function* () { + return execm.exec(yield exports.getCLI(), args, true).then(res => { if (res.stderr != '' && !res.success) { throw new Error(res.stderr); } - return exports.parseCLIVersion(res.stdout); + return res.stdout; }); }); +exports.getCLIVersion = () => __awaiter(void 0, void 0, void 0, function* () { + return exports.parseCLIVersion(yield exports.getCLICmdOutput(['--version'])); +}); exports.parseCLIVersion = (stdout) => __awaiter(void 0, void 0, void 0, function* () { const matches = /aws-cli\/([0-9.]+)/.exec(stdout); if (matches) { diff --git a/src/aws.ts b/src/aws.ts index 7515d20..8f5c289 100644 --- a/src/aws.ts +++ b/src/aws.ts @@ -10,15 +10,19 @@ export const getCLI = async (): Promise => { return io.which('aws', true); }; -export const getCLIVersion = async (): Promise => { - return execm.exec('aws', ['--version'], true).then(res => { +export const getCLICmdOutput = async (args: string[]): Promise => { + return execm.exec(await getCLI(), args, true).then(res => { if (res.stderr != '' && !res.success) { throw new Error(res.stderr); } - return parseCLIVersion(res.stdout); + return res.stdout; }); }; +export const getCLIVersion = async (): Promise => { + return parseCLIVersion(await getCLICmdOutput(['--version'])); +}; + export const parseCLIVersion = async (stdout: string): Promise => { const matches = /aws-cli\/([0-9.]+)/.exec(stdout); if (matches) { diff --git a/src/docker.ts b/src/docker.ts index fc8c3f7..bd17275 100644 --- a/src/docker.ts +++ b/src/docker.ts @@ -47,13 +47,11 @@ export async function loginECR(registry: string, username: string, password: str process.env.AWS_ACCESS_KEY_ID = username; process.env.AWS_SECRET_ACCESS_KEY = password; - core.info(`⬇️ Retrieving docker login command through AWS CLI ${cliVersion}...`); - await execm.exec(cliPath, ['ecr', 'get-login', '--region', ecrRegion, '--no-include-email'], true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } + + core.info(`⬇️ Retrieving docker login command through AWS CLI ${cliVersion} (${cliPath})...`); + aws.getCLICmdOutput(['ecr', 'get-login', '--region', ecrRegion, '--no-include-email']).then(stdout => { core.info(`🔑 Logging into ${registry}...`); - execm.exec(res.stdout, [], true).then(res => { + execm.exec(stdout, [], true).then(res => { if (res.stderr != '' && !res.success) { throw new Error(res.stderr); }