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
JavaScript
;
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;