@messari/cli
Version:
Messari Crypto CLI (mcrypto) is a tool for getting cryptocurrency market data, news, and more!
102 lines (101 loc) • 3.82 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var nconf_1 = __importDefault(require("nconf"));
var commander_1 = require("commander");
// Utils
var http_client_1 = require("./utils/http_client");
// Commands
var market_data_1 = __importDefault(require("./commands/market_data"));
var asset_profile_1 = __importDefault(require("./commands/asset_profile"));
// import plugMetrics from "./commands/metrics";
var all_time_high_1 = __importDefault(require("./commands/all_time_high"));
var lending_1 = __importDefault(require("./commands/lending"));
var developers_1 = __importDefault(require("./commands/developers"));
var news_1 = __importDefault(require("./commands/news"));
var roi_1 = __importDefault(require("./commands/roi"));
var blockchain_1 = __importDefault(require("./commands/blockchain"));
var satoshi_1 = __importDefault(require("./commands/satoshi"));
// Initialize nconf for local storage
nconf_1.default.argv().env().file({ file: "./config.json" });
nconf_1.default.defaults({ "apiKey": null });
nconf_1.default.save(function (error) {
if (error)
console.error(error);
});
var apiKey = nconf_1.default.get("apiKey");
// New command instance to capture and parse cli
var program = new commander_1.Command();
program
.description("Cryptocurrency market data at your fingertips.")
.option("-a --asset <ticker>", "Get asset profile")
.option("-md --market_data <ticker...>", "Get asset(s) market data")
// .option("me --metrics <ticker>", "Asset Key")
.option("-ath --all_time_high <ticker...>", "Get asset(s) all time high data")
.option("-lend --lending <ticker>", "Get lender/borrower rates and general defi data")
.option("-chain --blockchain <ticker>", "Get information about the blockchain")
.option("-roi --roi <ticker>", "Get ROI numbers")
.option("-dev --developers <ticker>", "Get GitHub repository data")
.option("-news --news [ticker]", "Get current Messari news (ticker optional)")
.option("-sat --satoshi", "Get satoshi's net worth")
.helpOption("-h, --help", "Display help for more commands");
// If API Key is not set, make it a required option
if (!apiKey) {
program.requiredOption("-i, --init <api_key>", "Enter Messari API Key");
}
else {
program.option("-i, --init <api_key>", "Enter Messari API Key");
}
// Parse & get cli command options
var options = program.parse().opts();
// Check the options object to create flag if commands are being used, otherwise show help
var hasCommand = Object.keys(options).length !== 0;
if (!hasCommand)
program.help();
// Set API key in http client header and set is init flag to true
if (options.init) {
http_client_1.setApiKey(options.init);
}
// Get asset profile
if (options.asset) {
asset_profile_1.default(options.asset);
}
// Get market data for asset
if (options.market_data) {
market_data_1.default(options.market_data);
}
// TODO: Get metrics for asset
// if (options.me) {
// plugMetrics(options.me);
// }
// Get all time high data for asset
if (options.all_time_high) {
all_time_high_1.default(options.all_time_high);
}
// Get lending & borrowing data for asset
if (options.lending) {
lending_1.default(options.lending);
}
// Get fee data for asset
if (options.blockchain) {
blockchain_1.default(options.blockchain);
}
// Get ROI data for asset
if (options.roi) {
roi_1.default(options.roi);
}
// Get developer data for asset
if (options.developers) {
developers_1.default(options.developers);
}
// Get news for asset
if (options.news) {
news_1.default(options.news);
}
// Get satoshi's net worth
if (options.satoshi) {
satoshi_1.default();
}