@bconnorwhite/bob
Version:
Bob is a toolkit for TypeScript projects
220 lines (180 loc) • 9.25 kB
JavaScript
;
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;