UNPKG

1.28 kBJavaScriptView Raw
1const fs = require('fs');
2const path = require('path');
3const meta = require('user-meta');
4const { template, packageJson } = require('mrm-core');
5
6const defaultLicense = 'MIT';
7
8const ANONYMOUS_LICENSES = ['Unlicense'];
9
10const isAnonymouseLicense = name => ANONYMOUS_LICENSES.indexOf(name) > -1;
11
12function task(config) {
13 const pkg = packageJson();
14 config
15 .defaults({ licenseFile: 'License.md' })
16 .defaults({ name: pkg.get('author.name') })
17 .defaults(meta);
18
19 const configLicense = config.values().license;
20
21 if (!isAnonymouseLicense(configLicense)) {
22 config.require('name', 'email');
23 }
24
25 const { name, email, licenseFile } = config.values();
26
27 let license = configLicense;
28 let shouldUpdatePkgLicense = false;
29 if (!license) {
30 license = pkg.get('license', defaultLicense);
31 shouldUpdatePkgLicense = true;
32 }
33
34 const templateFile = path.join(__dirname, `templates/${license}.md`);
35
36 if (!fs.existsSync(templateFile)) {
37 console.log(`No template for the "${license}" license found, skipping`);
38 return;
39 }
40
41 if (shouldUpdatePkgLicense) {
42 pkg.set('license', license);
43 pkg.save();
44 }
45
46 template(licenseFile, templateFile)
47 .apply({
48 name,
49 email,
50 year: new Date().getFullYear(),
51 })
52 .save();
53}
54task.description = 'Adds license file';
55
56module.exports = task;