@metacall/deploy
Version:
Tool for deploying into MetaCall FaaS platform.
107 lines (106 loc) • 4.73 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (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.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const plan_1 = require("@metacall/protocol/plan");
const protocol_1 = __importDefault(require("@metacall/protocol/protocol"));
const fs_1 = require("fs");
const path_1 = require("path");
const args_1 = __importStar(require("./cli/args"));
const inspect_1 = require("./cli/inspect");
const messages_1 = require("./cli/messages");
const unknown_1 = require("./cli/unknown");
const validateToken_1 = __importDefault(require("./cli/validateToken"));
const delete_1 = require("./delete");
const deploy_1 = require("./deploy");
const force_1 = require("./force");
const listPlans_1 = require("./listPlans");
const logout_1 = require("./logout");
const plan_2 = require("./plan");
const startup_1 = require("./startup");
void (async () => {
if (args_1.default['_unknown'].length)
(0, unknown_1.handleUnknownArgs)();
if (args_1.default['version']) {
return console.log(`v${(await Promise.resolve().then(() => __importStar(require((0, path_1.join)(require.main
? (0, path_1.join)((0, path_1.dirname)(require.main.filename), '..')
: process.cwd(), 'package.json'))))).version}`);
}
if (args_1.default['logout'])
return (0, logout_1.logout)();
const config = await (0, startup_1.startup)(args_1.default['confDir']);
const api = (0, protocol_1.default)(config.token, args_1.default['dev'] ? config.devURL : config.baseURL);
await (0, validateToken_1.default)(api);
if (args_1.default['listPlans'])
return await (0, listPlans_1.listPlans)(api);
if (args_1.default['inspect'] === null) {
args_1.default['inspect'] = args_1.InspectFormat.Table;
}
if (args_1.default['inspect'])
return await (0, inspect_1.inspect)(args_1.default['inspect'], config, api);
if (args_1.default['delete'])
return await (0, delete_1.deleteBySelection)(api);
if (args_1.default['force'])
await (0, force_1.force)(api);
// On line 63, we passed Essential to the FAAS in dev environment,
// the thing is there is no need of plans in Local Faas (--dev),
// this could have been handlled neatly if we created deploy as a State Machine,
// think about a better way
const planSelected = args_1.default['dev'] ? plan_1.Plans.Essential : await (0, plan_2.plan)(api);
if (args_1.default['addrepo']) {
try {
return await (0, deploy_1.deployFromRepository)(api, planSelected, new URL(args_1.default['addrepo']).href);
}
catch (e) {
(0, messages_1.error)(String(e));
}
}
// If workdir is passed call than deploy using package
if (args_1.default['workdir']) {
const rootPath = args_1.default['workdir'];
try {
if (!(await fs_1.promises.stat(rootPath)).isDirectory()) {
return (0, messages_1.error)(`Invalid root path, ${rootPath} is not a directory.`, deploy_1.ErrorCode.NotDirectoryRootPath);
}
}
catch (e) {
return (0, messages_1.error)(`Invalid root path, ${rootPath} not found.`, deploy_1.ErrorCode.NotFoundRootPath);
}
try {
await (0, deploy_1.deployPackage)(rootPath, api, planSelected);
}
catch (e) {
(0, messages_1.error)(String(e));
}
}
if (args_1.default['serverUrl']) {
config.baseURL = args_1.default['serverUrl'];
}
})();
// change all flag names to toUpperCase
// think of a way to write test for --dev flag