UNPKG

@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
#!/usr/bin/env node "use strict"; 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(); }