From 2c57607524d7d8356334f986c633daaa420fe6b5 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Thu, 20 Aug 2020 16:40:33 +0200 Subject: [PATCH] Refactor --- dist/index.js | 217 +++++++++++++++++++++++++++++++++++++------------ src/context.ts | 17 ++++ src/docker.ts | 61 ++++++++++++++ src/main.ts | 61 ++------------ 4 files changed, 251 insertions(+), 105 deletions(-) create mode 100644 src/context.ts create mode 100644 src/docker.ts diff --git a/dist/index.js b/dist/index.js index 44428bd..425a6e6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1074,9 +1074,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge Object.defineProperty(exports, "__esModule", { value: true }); const os = __importStar(__webpack_require__(87)); const core = __importStar(__webpack_require__(470)); -const exec = __importStar(__webpack_require__(986)); -const ecr = __importStar(__webpack_require__(34)); -const execm = __importStar(__webpack_require__(807)); +const context_1 = __webpack_require__(482); +const docker = __importStar(__webpack_require__(231)); const stateHelper = __importStar(__webpack_require__(153)); function run() { return __awaiter(this, void 0, void 0, function* () { @@ -1085,49 +1084,10 @@ function run() { core.setFailed('Only supported on linux platform'); return; } - const registry = core.getInput('registry'); - stateHelper.setRegistry(registry); - stateHelper.setLogout(core.getInput('logout')); - const username = core.getInput('username'); - const password = core.getInput('password', { required: true }); - if (yield ecr.isECR(registry)) { - yield exec.exec('aws', ['--version']); - const ecrRegion = yield ecr.getRegion(registry); - process.env.AWS_ACCESS_KEY_ID = username; - process.env.AWS_SECRET_ACCESS_KEY = password; - core.info(`⬇️ Retrieving docker login command for ECR region ${ecrRegion}...`); - yield execm.exec('aws', ['ecr', 'get-login', '--region', ecrRegion, '--no-include-email'], true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } - core.info(`🔑 Logging into ${registry}...`); - execm.exec(res.stdout, [], true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } - core.info('🎉 Login Succeeded!'); - }); - }); - } - else { - let loginArgs = ['login', '--password', password]; - if (username) { - loginArgs.push('--username', username); - } - loginArgs.push(registry); - if (registry) { - core.info(`🔑 Logging into ${registry}...`); - } - else { - core.info(`🔑 Logging into DockerHub...`); - } - yield execm.exec('docker', loginArgs, true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } - core.info('🎉 Login Succeeded!'); - }); - } + let inputs = yield context_1.getInputs(); + stateHelper.setRegistry(inputs.registry); + stateHelper.setLogout(inputs.logout); + yield docker.login(inputs.registry, inputs.username, inputs.password); } catch (error) { core.setFailed(error.message); @@ -1139,11 +1099,7 @@ function logout() { if (!stateHelper.logout) { return; } - yield execm.exec('docker', ['logout', stateHelper.registry], false).then(res => { - if (res.stderr != '' && !res.success) { - core.warning(res.stderr); - } - }); + yield docker.logout(stateHelper.registry); }); } if (!stateHelper.IsPost) { @@ -1156,6 +1112,114 @@ else { /***/ }), +/***/ 231: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.loginECR = exports.loginStandard = exports.logout = exports.login = void 0; +const exec = __importStar(__webpack_require__(986)); +const core = __importStar(__webpack_require__(470)); +const ecr = __importStar(__webpack_require__(34)); +const execm = __importStar(__webpack_require__(807)); +function login(registry, username, password) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ecr.isECR(registry)) { + yield loginECR(registry, username, password); + } + else { + yield loginStandard(registry, username, password); + } + }); +} +exports.login = login; +function logout(registry) { + return __awaiter(this, void 0, void 0, function* () { + yield execm.exec('docker', ['logout', registry], false).then(res => { + if (res.stderr != '' && !res.success) { + core.warning(res.stderr); + } + }); + }); +} +exports.logout = logout; +function loginStandard(registry, username, password) { + return __awaiter(this, void 0, void 0, function* () { + let loginArgs = ['login', '--password', password]; + if (username) { + loginArgs.push('--username', username); + } + loginArgs.push(registry); + if (registry) { + core.info(`🔑 Logging into ${registry}...`); + } + else { + core.info(`🔑 Logging into DockerHub...`); + } + yield execm.exec('docker', loginArgs, true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(res.stderr); + } + core.info('🎉 Login Succeeded!'); + }); + }); +} +exports.loginStandard = loginStandard; +function loginECR(registry, username, password) { + return __awaiter(this, void 0, void 0, function* () { + yield exec.exec('aws', ['--version']); + const ecrRegion = yield ecr.getRegion(registry); + process.env.AWS_ACCESS_KEY_ID = username; + process.env.AWS_SECRET_ACCESS_KEY = password; + core.info(`⬇️ Retrieving docker login command for ECR region ${ecrRegion}...`); + yield execm.exec('aws', ['ecr', 'get-login', '--region', ecrRegion, '--no-include-email'], true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(res.stderr); + } + core.info(`🔑 Logging into ${registry}...`); + execm.exec(res.stdout, [], true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(res.stderr); + } + core.info('🎉 Login Succeeded!'); + }); + }); + }); +} +exports.loginECR = loginECR; +//# sourceMappingURL=docker.js.map + +/***/ }), + /***/ 357: /***/ (function(module) { @@ -1491,6 +1555,57 @@ exports.getState = getState; /***/ }), +/***/ 482: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getInputs = void 0; +const core = __importStar(__webpack_require__(470)); +function getInputs() { + return __awaiter(this, void 0, void 0, function* () { + return { + registry: core.getInput('registry'), + username: core.getInput('username'), + password: core.getInput('password', { required: true }), + logout: core.getInput('logout') + }; + }); +} +exports.getInputs = getInputs; +//# sourceMappingURL=context.js.map + +/***/ }), + /***/ 614: /***/ (function(module) { diff --git a/src/context.ts b/src/context.ts new file mode 100644 index 0000000..b284b90 --- /dev/null +++ b/src/context.ts @@ -0,0 +1,17 @@ +import * as core from '@actions/core'; + +export interface Inputs { + registry: string; + username: string; + password: string; + logout: string; +} + +export async function getInputs(): Promise { + return { + registry: core.getInput('registry'), + username: core.getInput('username'), + password: core.getInput('password', {required: true}), + logout: core.getInput('logout') + }; +} diff --git a/src/docker.ts b/src/docker.ts new file mode 100644 index 0000000..c343709 --- /dev/null +++ b/src/docker.ts @@ -0,0 +1,61 @@ +import * as exec from '@actions/exec'; +import * as core from '@actions/core'; +import * as ecr from './ecr'; +import * as execm from './exec'; + +export async function login(registry: string, username: string, password: string): Promise { + if (await ecr.isECR(registry)) { + await loginECR(registry, username, password); + } else { + await loginStandard(registry, username, password); + } +} + +export async function logout(registry: string): Promise { + await execm.exec('docker', ['logout', registry], false).then(res => { + if (res.stderr != '' && !res.success) { + core.warning(res.stderr); + } + }); +} + +export async function loginStandard(registry: string, username: string, password: string): Promise { + let loginArgs: Array = ['login', '--password', password]; + if (username) { + loginArgs.push('--username', username); + } + loginArgs.push(registry); + + if (registry) { + core.info(`🔑 Logging into ${registry}...`); + } else { + core.info(`🔑 Logging into DockerHub...`); + } + await execm.exec('docker', loginArgs, true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(res.stderr); + } + core.info('🎉 Login Succeeded!'); + }); +} + +export async function loginECR(registry: string, username: string, password: string): Promise { + await exec.exec('aws', ['--version']); + const ecrRegion = await ecr.getRegion(registry); + process.env.AWS_ACCESS_KEY_ID = username; + process.env.AWS_SECRET_ACCESS_KEY = password; + + core.info(`⬇️ Retrieving docker login command for ECR region ${ecrRegion}...`); + await execm.exec('aws', ['ecr', 'get-login', '--region', ecrRegion, '--no-include-email'], true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(res.stderr); + } + core.info(`🔑 Logging into ${registry}...`); + execm.exec(res.stdout, [], true).then(res => { + if (res.stderr != '' && !res.success) { + throw new Error(res.stderr); + } + core.info('🎉 Login Succeeded!'); + }); + }); +} diff --git a/src/main.ts b/src/main.ts index 0746e3d..4f377b4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,9 +1,7 @@ import * as os from 'os'; import * as core from '@actions/core'; -import * as exec from '@actions/exec'; -import * as ecr from './ecr'; -import * as execm from './exec'; - +import {getInputs, Inputs} from './context'; +import * as docker from './docker'; import * as stateHelper from './state-helper'; async function run(): Promise { @@ -13,51 +11,10 @@ async function run(): Promise { return; } - const registry: string = core.getInput('registry'); - stateHelper.setRegistry(registry); - stateHelper.setLogout(core.getInput('logout')); - - const username: string = core.getInput('username'); - const password: string = core.getInput('password', {required: true}); - - if (await ecr.isECR(registry)) { - await exec.exec('aws', ['--version']); - const ecrRegion = await ecr.getRegion(registry); - process.env.AWS_ACCESS_KEY_ID = username; - process.env.AWS_SECRET_ACCESS_KEY = password; - - core.info(`⬇️ Retrieving docker login command for ECR region ${ecrRegion}...`); - await execm.exec('aws', ['ecr', 'get-login', '--region', ecrRegion, '--no-include-email'], true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } - core.info(`🔑 Logging into ${registry}...`); - execm.exec(res.stdout, [], true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } - core.info('🎉 Login Succeeded!'); - }); - }); - } else { - let loginArgs: Array = ['login', '--password', password]; - if (username) { - loginArgs.push('--username', username); - } - loginArgs.push(registry); - - if (registry) { - core.info(`🔑 Logging into ${registry}...`); - } else { - core.info(`🔑 Logging into DockerHub...`); - } - await execm.exec('docker', loginArgs, true).then(res => { - if (res.stderr != '' && !res.success) { - throw new Error(res.stderr); - } - core.info('🎉 Login Succeeded!'); - }); - } + let inputs: Inputs = await getInputs(); + stateHelper.setRegistry(inputs.registry); + stateHelper.setLogout(inputs.logout); + await docker.login(inputs.registry, inputs.username, inputs.password); } catch (error) { core.setFailed(error.message); } @@ -67,11 +24,7 @@ async function logout(): Promise { if (!stateHelper.logout) { return; } - await execm.exec('docker', ['logout', stateHelper.registry], false).then(res => { - if (res.stderr != '' && !res.success) { - core.warning(res.stderr); - } - }); + await docker.logout(stateHelper.registry); } if (!stateHelper.IsPost) {