lugger
Version:
Lugger is an automation framework running on customizable Typescript DSL
91 lines • 4.08 kB
JavaScript
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
;