UNPKG

@bconnorwhite/bob

Version:

Bob is a toolkit for TypeScript projects

220 lines (180 loc) 9.25 kB
"use strict"; exports.__esModule = true; exports.initReadme = initReadme; exports.initReadmeAction = initReadmeAction; exports["default"] = void 0; var _inquirer = require("inquirer"); var _commanderVersion = require("commander-version"); var _package = require("@bconnorwhite/package"); var _npmDescription = require("npm-description"); var _spdxLicense = require("spdx-license"); var _joinNewlines = _interopRequireDefault(require("join-newlines")); var _utils = require("../../utils"); var _structure = require("../../structure"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function title(packageName) { return " <h1>" + packageName + "</h1>\n"; } function npmVersion(packageName) { return (0, _joinNewlines["default"])([" <a href=\"https://npmjs.com/package/" + packageName + "\">", " <img alt=\"NPM\" src=\"https://img.shields.io/npm/v/" + packageName + ".svg\">", " </a>"], true); } function gitHubLanguages(gitHubName) { return (0, _joinNewlines["default"])([" <a href=\"https://github.com/" + gitHubName + "\">", " <img alt=\"TypeScript\" src=\"https://img.shields.io/github/languages/top/" + gitHubName + ".svg\">", " </a>"], true); } function coveralls(gitHubName) { return (0, _joinNewlines["default"])([" <a href=\"https://coveralls.io/github/" + gitHubName + "?branch=master\">", " <img alt=\"Coverage Status\" src=\"https://coveralls.io/repos/github/" + gitHubName + ".svg?branch=master\">", " </a>"], true); } function gitHubStars(gitHubName) { return (0, _joinNewlines["default"])([" <a href=\"https://github.com/" + gitHubName + "\">", " <img alt=\"GitHub Stars\" src=\"https://img.shields.io/github/stars/" + gitHubName + "?label=Stars%20Appreciated%21&style=social\">", " </a>"], true); } function twitter(twitterHandle) { return (0, _joinNewlines["default"])([" <a href=\"https://twitter.com/" + twitterHandle + "\">", " <img alt=\"Twitter Follow\" src=\"https://img.shields.io/twitter/follow/" + twitterHandle + ".svg?label=%40" + twitterHandle + "&style=social\">", " </a>"], true); } function header(packageName, gitHubName, twitterHandle) { return "<div align=\"center\">\n" + (packageName ? title(packageName) : "") + (packageName ? npmVersion(packageName) : "") + (gitHubName ? gitHubLanguages(gitHubName) : "") + (gitHubName ? coveralls(gitHubName) : "") + (gitHubName ? gitHubStars(gitHubName) : "") + (twitterHandle ? twitter(twitterHandle) : "") + "</div>\n\n<br />\n\n"; } function description(packageDescription) { if (packageDescription) { return "> " + packageDescription + ((packageDescription == null ? void 0 : packageDescription.endsWith(".")) ? "" : ".") + "\n\n"; } else { return ""; } } function installation(packageName) { if (packageName) { return "## Installation\n\n" + "```sh\n" + ("yarn add " + packageName + "\n") + "```\n\n" + "```sh\n" + ("npm install " + packageName + "\n") + "```\n\n"; } else { return undefined; } } function packageList(_x) { return _packageList.apply(this, arguments); } function _packageList() { _packageList = _asyncToGenerator(function* (packages) { return (0, _npmDescription.getDescriptions)(Object.keys(packages)).then(function (descriptions) { return Object.keys(packages).reduce(function (retval, name) { return retval + "- [" + name + "](https://www.npmjs.com/package/" + name + "): " + descriptions[name] + "\n"; }, ""); }); }); return _packageList.apply(this, arguments); } function dependencies(gitHubName, packages) { if (gitHubName && packages && Object.keys(packages).length > 0) { return packageList(packages).then(function (list) { return "<br />\n\n<h2>Dependencies<img align=\"right\" alt=\"dependencies\" src=\"https://img.shields.io/david/" + gitHubName + ".svg\"></h2>\n\n" + list + "\n"; }); } else { return ""; } } function devDependencies(gitHubName, packages) { if (gitHubName && packages && Object.keys(packages).length > 0) { return packageList(packages).then(function (list) { return "<br />\n\n<h2>Dev Dependencies<img align=\"right\" alt=\"David\" src=\"https://img.shields.io/david/dev/" + gitHubName + ".svg\"></h2>\n\n" + list + "\n"; }); } else { return ""; } } function peerDependencies(gitHubName, packages) { if (gitHubName && packages && Object.keys(packages).length > 0) { return packageList(packages).then(function (list) { return "<br />\n\n<h2>Peer Dependencies<img align=\"right\" alt=\"David\" src=\"https://img.shields.io/david/peer/" + gitHubName + ".svg\"></h2>\n\n" + list + "\n"; }); } else { return ""; } } function license(packageName, licenseID) { if (packageName && licenseID) { return (0, _spdxLicense.getLicense)(licenseID).then(function (result) { if (result !== undefined) { return "<br />\n\n<h2>License <img align=\"right\" alt=\"license\" src=\"https://img.shields.io/npm/l/" + packageName + ".svg\"></h2>\n\n" + ("[" + licenseID + "](" + result.url + ")"); } else { return ""; } }); } else { return ""; } } function getGitHubName(repo) { var string = typeof repo === "string" ? repo : repo == null ? void 0 : repo.url; if (string !== undefined && string.startsWith("git+https://github.com/")) { return string.replace("git+https://github.com/", "").replace(".git", ""); } else { return undefined; } } function readmeString(_x2, _x3, _x4, _x5) { return _readmeString.apply(this, arguments); } function _readmeString() { _readmeString = _asyncToGenerator(function* (packageName, packageDescription, gitHubName, twitterHandle) { var pkg = yield (0, _package.getPackageJSON)().read(); return Promise.all([Promise.resolve(dependencies(gitHubName, pkg == null ? void 0 : pkg.dependencies)), Promise.resolve(peerDependencies(gitHubName, pkg == null ? void 0 : pkg.peerDependencies)), Promise.resolve(devDependencies(gitHubName, pkg == null ? void 0 : pkg.devDependencies)), Promise.resolve(license(packageName, pkg == null ? void 0 : pkg.license))]).then(function (footer) { return header(packageName, gitHubName, twitterHandle) + description(packageDescription) + installation(packageName) + footer.join(""); }); }); return _readmeString.apply(this, arguments); } function initReadme() { return _initReadme.apply(this, arguments); } function _initReadme() { _initReadme = _asyncToGenerator(function* () { var readme = (0, _structure.getReadme)(); return readme.exists().then( /*#__PURE__*/function () { var _ref = _asyncToGenerator(function* (exists) { if (exists) { // TODO: update return Promise.resolve(); } else { return (0, _utils.getConfigStore)().then( /*#__PURE__*/function () { var _ref2 = _asyncToGenerator(function* (configstore) { return (0, _inquirer.prompt)([{ type: "input", name: "twitterHandle", message: "twitter handle:", "default": configstore == null ? void 0 : configstore.get("twitterHandle") }]).then( /*#__PURE__*/function () { var _ref3 = _asyncToGenerator(function* (answers) { configstore == null ? void 0 : configstore.set("twitterHandle", answers.twitterHandle); var pkg = yield (0, _package.getPackageJSON)().read(); return readmeString(pkg == null ? void 0 : pkg.name, pkg == null ? void 0 : pkg.description, getGitHubName(pkg == null ? void 0 : pkg.repository), answers.twitterHandle).then(function (text) { return readme.write(text); }); }); return function (_x8) { return _ref3.apply(this, arguments); }; }()); }); return function (_x7) { return _ref2.apply(this, arguments); }; }()); } }); return function (_x6) { return _ref.apply(this, arguments); }; }()); }); return _initReadme.apply(this, arguments); } function initReadmeAction() { return _initReadmeAction.apply(this, arguments); } function _initReadmeAction() { _initReadmeAction = _asyncToGenerator(function* () { initReadme(); }); return _initReadmeAction.apply(this, arguments); } var _default = (0, _commanderVersion.createCommand)("readme").description("initialize README.md").action(initReadmeAction); exports["default"] = _default;