UNPKG

lugger

Version:

Lugger is an automation framework running on customizable Typescript DSL

91 lines 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.docker__ = exports.docker = void 0; const ts_dsl_1 = require("ts-dsl"); const docker_model_1 = require("./docker.model"); class dockerModel { static ps(...args) { (0, ts_dsl_1.dslIfaceGuard)('lugger:docker:docker.ps', __filename); return null; } static images(...args) { (0, ts_dsl_1.dslIfaceGuard)('lugger:docker:docker.images', __filename); return null; } static pull(...args) { (0, ts_dsl_1.dslIfaceGuard)('lugger:docker:docker.pull', __filename); return null; } static login(...args) { (0, ts_dsl_1.dslIfaceGuard)('lugger:docker:docker.login', __filename); return null; } } exports.docker = dockerModel; function dockerModel__(cce, ...args) { return (0, ts_dsl_1.getRuntime)().scopedExec(cce, 'lugger:docker:docker', { data: {} }, async (resolve, reject, scopeContext) => { resolve(true); }); } dockerModel__.ps = (cce, ...args) => { return (0, ts_dsl_1.getRuntime)().scopedExec(cce, 'lugger:docker:docker.ps', { data: {} }, async (resolve, reject, scopeContext) => { try { resolve(JSON.parse(await (0, docker_model_1.UnixSocketGet)('/var/run/docker.sock', '/containers/json?all=true&size=true'))); } catch (e) { reject(e); } }); }; dockerModel__.images = (cce, ...args) => { return (0, ts_dsl_1.getRuntime)().scopedExec(cce, 'lugger:docker:docker.images', { data: {} }, async (resolve, reject, scopeContext) => { try { resolve(JSON.parse(await (0, docker_model_1.UnixSocketGet)('/var/run/docker.sock', '/images/json'))); } catch (e) { reject(e); } }); }; dockerModel__.pull = (cce, ...args) => { const image = args[0]; return (0, ts_dsl_1.getRuntime)().scopedExec(cce, 'lugger:docker:docker.pull', { data: {} }, async (resolve, reject, scopeContext) => { var _a; try { let registryEndpoint = 'docker.io'; const headers = { 'X-Stream-Match': [ `Status: Image is up to date for :: cached`, `Status: Downloaded :: downloaded`, `unknown: Not Found :: not_found`, `unauthorized: :: unauthorized`, ].join(' || ') }; if (image.indexOf('.') >= 0) { registryEndpoint = image.split('/')[0]; if ((_a = scopeContext.parent.data.dockerLogin) === null || _a === void 0 ? void 0 : _a[registryEndpoint]) { headers['X-Registry-Auth'] = scopeContext.parent.data.dockerLogin[registryEndpoint]; } } const res = await (0, docker_model_1.UnixSocketPost)('/var/run/docker.sock', `/images/create?fromImage=${image}`, '', headers); if (!res) { return reject(new Error(`unknown error while pulling ${image}`)); } else if (res === 'not_found') { return reject(new Error(`image not found: ${image}`)); } else if (res === 'unauthorized') { return reject(new Error(`unauthorized: no valid permission for ${registryEndpoint}`)); } return resolve(res); } catch (e) { return reject(e); } }); }; dockerModel__.login = (cce, ...args) => { let [registry, username, password] = args; return (0, ts_dsl_1.getRuntime)().scopedExec(cce, 'lugger:docker:docker.login', { data: {} }, async (resolve, reject, scopeContext) => { try { if (!scopeContext.parent.data.dockerLogin) { scopeContext.parent.data.dockerLogin = {}; } scopeContext.parent.data.dockerLogin[registry] = Buffer.from(JSON.stringify({ serveraddress: registry, username, password, email: '', })).toString('base64'); resolve(void 0); } catch (e) { reject(e); } }); }; exports.docker__ = dockerModel__; //# sourceMappingURL=docker.js.map