@flxbl-io/sfp
Version:
sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model
147 lines • 14.9 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 sfp_logger_1 = __importStar(require("@flxbl-io/sfp-logger"));
const Table = require("cli-table");
const core_1 = require("@salesforce/core");
const GroupConsoleLogs_1 = __importDefault(require("./GroupConsoleLogs"));
const TableConstants_1 = require("./TableConstants");
const markdown_table_ts_1 = require("markdown-table-ts");
const FileOutputHandler_1 = __importDefault(require("../outputs/FileOutputHandler"));
class OrgInfoDisplayer {
static printScratchOrgInfo(scratchOrg) {
let groupSection = new GroupConsoleLogs_1.default(`Display Org Info`).begin();
sfp_logger_1.default.printHeaderLine('', sfp_logger_1.COLOR_HEADER, core_1.LoggerLevel.INFO);
sfp_logger_1.default.log((0, sfp_logger_1.COLOR_KEY_VALUE)(`-- Org Details:--`));
const table = new Table({
chars: TableConstants_1.COLON_MIDDLE_BORDER_TABLE,
style: { "padding-left": 2 },
});
table.push([(0, sfp_logger_1.COLOR_HEADER)(`Org Id`), (0, sfp_logger_1.COLOR_KEY_MESSAGE)(scratchOrg.orgId)]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Login URL`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(scratchOrg.loginURL),
]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Username`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(scratchOrg.username),
]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Password`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(scratchOrg.password),
]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Auth URL`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(scratchOrg.sfdxAuthUrl),
]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Expiry`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(scratchOrg.expiryDate),
]);
sfp_logger_1.default.log(table.toString(), core_1.LoggerLevel.INFO);
sfp_logger_1.default.log((0, sfp_logger_1.COLOR_TRACE)(`You may use the following commands to authenticate to the org`), core_1.LoggerLevel.INFO);
sfp_logger_1.default.log((0, sfp_logger_1.COLOR_TRACE)(`echo ${scratchOrg.sfdxAuthUrl} > ./authfile`), core_1.LoggerLevel.INFO);
sfp_logger_1.default.log((0, sfp_logger_1.COLOR_TRACE)(`sf org login sfdx-url --sfdx-url-file=authfile`), core_1.LoggerLevel.INFO);
sfp_logger_1.default.log((0, sfp_logger_1.COLOR_TRACE)(`sf org open --target-org=${scratchOrg.username}`), core_1.LoggerLevel.INFO);
sfp_logger_1.default.printHeaderLine('', sfp_logger_1.COLOR_HEADER, core_1.LoggerLevel.INFO);
groupSection.end();
}
static writeScratchOrgInfoToMarkDown(scratchOrg) {
const pathToMarkDownFile = `org-info.md`;
const fileOutputHandler = FileOutputHandler_1.default.getInstance();
fileOutputHandler.writeOutput(pathToMarkDownFile, `\nPlease find the validation org details below`);
let tableData = {
table: {
head: [
'Org Info',
'',
],
body: []
},
alignment: [markdown_table_ts_1.Align.Left, markdown_table_ts_1.Align.Left, markdown_table_ts_1.Align.Left, markdown_table_ts_1.Align.Right],
};
tableData.table.body.push([`Org Id`, scratchOrg.orgId]);
tableData.table.body.push([`Login URL`, scratchOrg.loginURL]);
tableData.table.body.push([`Username`, scratchOrg.username]);
tableData.table.body.push([`Password`, scratchOrg.password]);
tableData.table.body.push([`Expiry`, scratchOrg.expiryDate]);
fileOutputHandler.appendOutput(pathToMarkDownFile, `\n\n${(0, markdown_table_ts_1.getMarkdownTable)(tableData)}`);
fileOutputHandler.appendOutput(pathToMarkDownFile, `\n\nYou may use the following commands to authenticate to the org`);
fileOutputHandler.appendOutput(pathToMarkDownFile, `\`\`\``);
fileOutputHandler.appendOutput(pathToMarkDownFile, `echo ${scratchOrg.sfdxAuthUrl} > ./authfile`);
fileOutputHandler.appendOutput(pathToMarkDownFile, `sf org login sfdx-url --sfdx-url-file=authfile`);
fileOutputHandler.appendOutput(pathToMarkDownFile, `sf org open --target-org=${scratchOrg.username}`);
fileOutputHandler.appendOutput(pathToMarkDownFile, `\`\`\``);
}
static printOrgInfo(org) {
let groupSection = new GroupConsoleLogs_1.default(`Display Org Info`).begin();
sfp_logger_1.default.printHeaderLine('', sfp_logger_1.COLOR_HEADER, core_1.LoggerLevel.INFO);
sfp_logger_1.default.log((0, sfp_logger_1.COLOR_KEY_VALUE)(`-- Org Details:--`));
const table = new Table({
chars: TableConstants_1.COLON_MIDDLE_BORDER_TABLE,
style: { "padding-left": 2 },
});
table.push([(0, sfp_logger_1.COLOR_HEADER)(`Org Id`), (0, sfp_logger_1.COLOR_KEY_MESSAGE)(org.getOrgId())]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Instance URL`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(org.getConnection().instanceUrl),
]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Username`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(org.getUsername()),
]);
table.push([
(0, sfp_logger_1.COLOR_HEADER)(`Front Door URL`),
(0, sfp_logger_1.COLOR_KEY_MESSAGE)(org.getConnection().getAuthInfo().getOrgFrontDoorUrl())
]);
sfp_logger_1.default.log(table.toString(), core_1.LoggerLevel.INFO);
sfp_logger_1.default.printHeaderLine('', sfp_logger_1.COLOR_HEADER, core_1.LoggerLevel.INFO);
groupSection.end();
}
static writeOrgInfoToMarkDown(org) {
const pathToMarkDownFile = `org-info.md`;
const fileOutputHandler = FileOutputHandler_1.default.getInstance();
fileOutputHandler.appendOutput(pathToMarkDownFile, `\nPlease find the validation org details below`);
let tableData = {
table: {
head: [
'Org Details',
'',
],
body: []
},
alignment: [markdown_table_ts_1.Align.Left, markdown_table_ts_1.Align.Left, markdown_table_ts_1.Align.Left, markdown_table_ts_1.Align.Right],
};
tableData.table.body.push([`Org Id`, org.getOrgId()]);
tableData.table.body.push([`Username`, org.getUsername()]);
tableData.table.body.push([`Login to the org`, `[Click Here](${org.getConnection().getAuthInfo().getOrgFrontDoorUrl()})`]);
fileOutputHandler.appendOutput(pathToMarkDownFile, `\n\n${(0, markdown_table_ts_1.getMarkdownTable)(tableData)}`);
}
}
exports.default = OrgInfoDisplayer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JnSW5mb0Rpc3BsYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS9PcmdJbmZvRGlzcGxheWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtRUFBZ0g7QUFFaEgsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLDJDQUErQztBQUMvQywwRUFBa0Q7QUFDbEQscURBQTZEO0FBRTdELHlEQUE0RDtBQUU1RCxxRkFBNkQ7QUFFN0QsTUFBcUIsZ0JBQWdCO0lBRTVCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFzQjtRQUN0RCxJQUFJLFlBQVksR0FBRyxJQUFJLDBCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFcEUsb0JBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLHlCQUFZLEVBQUUsa0JBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxvQkFBUyxDQUFDLEdBQUcsQ0FBQyxJQUFBLDRCQUFlLEVBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDO1lBQ3RCLEtBQUssRUFBRSwwQ0FBeUI7WUFDaEMsS0FBSyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRTtTQUM3QixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBQSx5QkFBWSxFQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUEsOEJBQWlCLEVBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBQSx5QkFBWSxFQUFDLFdBQVcsQ0FBQztZQUN6QixJQUFBLDhCQUFpQixFQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDdkMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFD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