UNPKG

md-generator

Version:

NPM Package which bootstraps Development by creating all required .md files to meet community standards.

130 lines (129 loc) 5.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var lodash_1 = require("lodash"); var child_process_1 = require("child_process"); var utils_1 = require("./utils"); var GITHUB_URL = 'https://github.com/'; var cleanRepoUrl = function (repoUrl) { return repoUrl .replace('\n', '') .replace('git+', '') .replace('.git', ''); }; var getRepoUrlFromPackageJson = function (packageJson) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var repoUrl; return tslib_1.__generator(this, function (_a) { repoUrl = lodash_1.get(packageJson, 'repository.url', undefined); return [2, lodash_1.isNil(repoUrl) ? undefined : cleanRepoUrl(repoUrl)]; }); }); }; exports.getRepoUrlFromGit = function () { try { var stdout = child_process_1.execSync('git config --get remote.origin.url'); return cleanRepoUrl(stdout); } catch (err) { return undefined; } }; var getRepoUrl = function (packageJson) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4, getRepoUrlFromPackageJson(packageJson)]; case 1: return [2, (_a.sent()) || exports.getRepoUrlFromGit()]; } }); }); }; exports.getRepoIssuesUrl = function (packageJson) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var repoIssuesUrl, repoUrl; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: repoIssuesUrl = lodash_1.get(packageJson, 'bugs.url', undefined); if (!lodash_1.isNil(repoIssuesUrl)) return [3, 2]; return [4, getRepoUrl()]; case 1: repoUrl = _a.sent(); if (!lodash_1.isNil(repoUrl)) { repoIssuesUrl = repoUrl + "/issues"; } _a.label = 2; case 2: return [2, repoIssuesUrl]; } }); }); }; var isGithubRepository = function (repositoryUrl) { return !lodash_1.isNil(repositoryUrl) && repositoryUrl.includes(GITHUB_URL); }; var getGithubUsernameFromRepositoryUrl = function (repositoryUrl) { return repositoryUrl.replace(GITHUB_URL, '').split('/')[0]; }; var getLicenseUrlFromGithubRepositoryUrl = function (repositoryUrl) { return repositoryUrl + "/blob/master/LICENSE"; }; var getReadmeUrlFromGithubRepositoryUrl = function (repositoryUrl) { return repositoryUrl + "#readme"; }; exports.getAuthorName = function (packageJson) { if (lodash_1.has(packageJson, 'author.name')) { return lodash_1.get(packageJson, 'author.name', undefined); } if (lodash_1.has(packageJson, 'author') && typeof packageJson.author === 'string') { return lodash_1.get(packageJson, 'author', undefined); } return undefined; }; var getProjectInfos = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var packageJson, name, description, engines, author, version, licenseName, homepage, usage, testCommand, repositoryUrl, contributingUrl, isGithubRepo, documentationUrl, githubUsername, licenseUrl; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4, utils_1.getPackageJson()]; case 1: packageJson = _a.sent(); name = utils_1.getProjectName(packageJson); description = lodash_1.get(packageJson, 'description', undefined); engines = lodash_1.get(packageJson, 'engines', undefined); author = exports.getAuthorName(packageJson); version = lodash_1.get(packageJson, 'version', undefined); licenseName = { name: lodash_1.get(packageJson, 'license', undefined) }; homepage = lodash_1.get(packageJson, 'homepage', undefined); usage = lodash_1.has(packageJson, 'scripts.start') ? 'npm run start' : undefined; testCommand = lodash_1.has(packageJson, 'scripts.test') ? 'npm run test' : undefined; return [4, getRepoUrl(packageJson)]; case 2: repositoryUrl = _a.sent(); return [4, exports.getRepoIssuesUrl(packageJson)]; case 3: contributingUrl = _a.sent(); isGithubRepo = isGithubRepository(repositoryUrl); documentationUrl = isGithubRepo ? getReadmeUrlFromGithubRepositoryUrl(repositoryUrl) : undefined; githubUsername = isGithubRepo ? getGithubUsernameFromRepositoryUrl(repositoryUrl) : undefined; licenseUrl = isGithubRepo ? getLicenseUrlFromGithubRepositoryUrl(repositoryUrl) : undefined; return [2, { name: name, description: description, version: version, author: author, homepage: homepage, repositoryUrl: repositoryUrl, contributingUrl: contributingUrl, githubUsername: githubUsername, engines: engines, licenseName: licenseName, licenseUrl: licenseUrl, documentationUrl: documentationUrl, isGithubRepo: isGithubRepo, usage: usage, testCommand: testCommand, }]; } }); }); }; exports.default = getProjectInfos;