1 | ;
|
2 |
|
3 | var isValid = require('is-valid-app');
|
4 |
|
5 | module.exports = function(app) {
|
6 | if (!isValid(app, 'generate-license')) return;
|
7 |
|
8 | /**
|
9 | * Plugins
|
10 | */
|
11 |
|
12 | app.use(require('generate-defaults'));
|
13 |
|
14 | /**
|
15 | * Generate a GNU Affero General Public License v3.0 `LICENSE`
|
16 | * file in the current working directory.
|
17 | *
|
18 | * ```sh
|
19 | * $ gen license:agpl-3.0
|
20 | * $ gen license:agpl-3.0 --dest ./docs
|
21 | * $ gen dest license:agpl-3.0
|
22 | * ```
|
23 | * @name agpl-3.0
|
24 | * @api public
|
25 | */
|
26 |
|
27 | app.task('agpl-3.0', { silent: true }, function() {
|
28 | return file(app, 'agpl-3.0');
|
29 | });
|
30 |
|
31 | /**
|
32 | * Generate an Apache License 2.0 `LICENSE`
|
33 | * file in the current working directory.
|
34 | *
|
35 | * ```sh
|
36 | * $ gen license:apache-2.0
|
37 | * $ gen license:apache-2.0 --dest ./docs
|
38 | * $ gen dest license:apache-2.0
|
39 | * ```
|
40 | * @name apache-2.0
|
41 | * @api public
|
42 | */
|
43 |
|
44 | app.task('apache-2.0', { silent: true }, function() {
|
45 | return file(app, 'apache-2.0');
|
46 | });
|
47 |
|
48 | /**
|
49 | * Generate an Artistic License 2.0 `LICENSE`
|
50 | * file in the current working directory.
|
51 | *
|
52 | * ```sh
|
53 | * $ gen license:artistic-2.0
|
54 | * $ gen license:artistic-2.0 --dest ./docs
|
55 | * $ gen dest license:artistic-2.0
|
56 | * ```
|
57 | * @name artistic-2.0
|
58 | * @api public
|
59 | */
|
60 |
|
61 | app.task('artistic-2.0', { silent: true }, function() {
|
62 | return file(app, 'artistic-2.0');
|
63 | });
|
64 |
|
65 | /**
|
66 | * Generate a BSD 2-clause "Simplified" License `LICENSE`
|
67 | * file in the current working directory.
|
68 | *
|
69 | * ```sh
|
70 | * $ gen license:bsd-2-clause
|
71 | * $ gen license:bsd-2-clause --dest ./docs
|
72 | * $ gen dest license:bsd-2-clause
|
73 | * ```
|
74 | * @name bsd-2-clause
|
75 | * @api public
|
76 | */
|
77 |
|
78 | app.task('bsd-2-clause', { silent: true }, function() {
|
79 | return file(app, 'bsd-2-clause');
|
80 | });
|
81 |
|
82 | /**
|
83 | * Generate a BSD 3-clause "New" or "Revised" License `LICENSE`
|
84 | * file in the current working directory.
|
85 | *
|
86 | * ```sh
|
87 | * $ gen license:bsd-3-clause
|
88 | * $ gen license:bsd-3-clause --dest ./docs
|
89 | * $ gen dest license:bsd-3-clause
|
90 | * ```
|
91 | * @name bsd-3-clause
|
92 | * @api public
|
93 | */
|
94 |
|
95 | app.task('bsd-3-clause', { silent: true }, function() {
|
96 | return file(app, 'bsd-3-clause');
|
97 | });
|
98 |
|
99 | /**
|
100 | * Generate a Creative Commons Zero v1.0 Universal `LICENSE`
|
101 | * file in the current working directory.
|
102 | *
|
103 | * ```sh
|
104 | * $ gen license:cc0-1.0
|
105 | * $ gen license:cc0-1.0 --dest ./docs
|
106 | * $ gen dest license:cc0-1.0
|
107 | * ```
|
108 | * @name cc0-1.0
|
109 | * @api public
|
110 | */
|
111 |
|
112 | app.task('cc0-1.0', { silent: true }, function() {
|
113 | return file(app, 'cc0-1.0');
|
114 | });
|
115 |
|
116 | /**
|
117 | * Generate an Eclipse Public License 1.0 `LICENSE`
|
118 | * file in the current working directory.
|
119 | *
|
120 | * ```sh
|
121 | * $ gen license:epl-1.0
|
122 | * $ gen license:epl-1.0 --dest ./docs
|
123 | * $ gen dest license:epl-1.0
|
124 | * ```
|
125 | * @name epl-1.0
|
126 | * @api public
|
127 | */
|
128 |
|
129 | app.task('epl-1.0', { silent: true }, function() {
|
130 | return file(app, 'epl-1.0');
|
131 | });
|
132 |
|
133 | /**
|
134 | * Generate a GNU General Public License v2.0 `LICENSE`
|
135 | * file in the current working directory.
|
136 | *
|
137 | * ```sh
|
138 | * $ gen license:gpl-2.0
|
139 | * $ gen license:gpl-2.0 --dest ./docs
|
140 | * $ gen dest license:gpl-2.0
|
141 | * ```
|
142 | * @name gpl-2.0
|
143 | * @api public
|
144 | */
|
145 |
|
146 | app.task('gpl-2.0', { silent: true }, function() {
|
147 | return file(app, 'gpl-2.0');
|
148 | });
|
149 |
|
150 | /**
|
151 | * Generate a GNU General Public License v3.0 `LICENSE`
|
152 | * file in the current working directory.
|
153 | *
|
154 | * ```sh
|
155 | * $ gen license:gpl-3.0
|
156 | * $ gen license:gpl-3.0 --dest ./docs
|
157 | * $ gen dest license:gpl-3.0
|
158 | * ```
|
159 | * @name gpl-3.0
|
160 | * @api public
|
161 | */
|
162 |
|
163 | app.task('gpl-3.0', { silent: true }, function() {
|
164 | return file(app, 'gpl-3.0');
|
165 | });
|
166 |
|
167 | /**
|
168 | * Generate a ISC License `LICENSE`
|
169 | * file in the current working directory.
|
170 | *
|
171 | * ```sh
|
172 | * $ gen license:isc
|
173 | * $ gen license:isc --dest ./docs
|
174 | * $ gen dest license:isc
|
175 | * ```
|
176 | * @name isc
|
177 | * @api public
|
178 | */
|
179 |
|
180 | app.task('isc', { silent: true }, function() {
|
181 | return file(app, 'isc');
|
182 | });
|
183 |
|
184 | /**
|
185 | * Generate a GNU Lesser General Public License v2.1 `LICENSE`
|
186 | * file in the current working directory.
|
187 | *
|
188 | * ```sh
|
189 | * $ gen license:lgpl-2.1
|
190 | * $ gen license:lgpl-2.1 --dest ./docs
|
191 | * $ gen dest license:lgpl-2.1
|
192 | * ```
|
193 | * @name lgpl-2.1
|
194 | * @api public
|
195 | */
|
196 |
|
197 | app.task('lgpl-2.1', { silent: true }, function() {
|
198 | return file(app, 'lgpl-2.1');
|
199 | });
|
200 |
|
201 | /**
|
202 | * Generate a GNU Lesser General Public License v3.0 `LICENSE.lesser`
|
203 | * file in the current working directory.
|
204 | *
|
205 | * This will also generate a GNU General Public License v3.0 `LICENSE`
|
206 | * file in the current working directory.
|
207 | *
|
208 | * ```sh
|
209 | * $ gen license:lgpl-3.0
|
210 | * $ gen license:lgpl-3.0 --dest ./docs
|
211 | * $ gen dest license:lgpl-3.0
|
212 | * ```
|
213 | * @name lgpl-3.0
|
214 | * @api public
|
215 | */
|
216 |
|
217 | app.task('lgpl-3.0', ['gpl-3.0'], function() {
|
218 | return file(app, 'lgpl-3.0');
|
219 | });
|
220 |
|
221 | /**
|
222 | * Generate a MIT License `LICENSE`
|
223 | * file in the current working directory.
|
224 | *
|
225 | * ```sh
|
226 | * $ gen license:mit
|
227 | * $ gen license:mit --dest ./docs
|
228 | * $ gen dest license:mit
|
229 | * ```
|
230 | * @name mit
|
231 | * @api public
|
232 | */
|
233 |
|
234 | app.task('mit', { silent: true }, function() {
|
235 | return file(app, 'mit');
|
236 | });
|
237 |
|
238 | /**
|
239 | * Generate a Mozilla Public License 2.0 `LICENSE`
|
240 | * file in the current working directory.
|
241 | *
|
242 | * ```sh
|
243 | * $ gen license:mpl-2.0
|
244 | * $ gen license:mpl-2.0 --dest ./docs
|
245 | * $ gen dest license:mpl-2.0
|
246 | * ```
|
247 | * @name mpl-2.0
|
248 | * @api public
|
249 | */
|
250 |
|
251 | app.task('mpl-2.0', { silent: true }, function() {
|
252 | return file(app, 'mpl-2.0');
|
253 | });
|
254 |
|
255 | /**
|
256 | * Generate a The Unlicense `UNLICENSE`
|
257 | * file in the current working directory.
|
258 | *
|
259 | * ```sh
|
260 | * $ gen license:unlicense
|
261 | * $ gen license:unlicense --dest ./docs
|
262 | * $ gen dest license:unlicense
|
263 | * ```
|
264 | * @name unlicense
|
265 | * @api public
|
266 | */
|
267 |
|
268 | app.task('unlicense', { silent: true }, function() {
|
269 | return file(app, 'unlicense');
|
270 | });
|
271 |
|
272 | /**
|
273 | * Prompts the user to choose the template to use for generating a `LICENSE`
|
274 | * file in the current working directory. This task is also aliased as `choose-license`
|
275 | * to provide a semantic name for API usage (e.g. `app.generate('choose-license', cb)`).
|
276 | *
|
277 | * ```sh
|
278 | * $ gen license
|
279 | * $ gen license --dest ./docs
|
280 | * $ gen dest license
|
281 | * # or
|
282 | * $ gen license:choose
|
283 | * $ gen license:choose --dest ./docs
|
284 | * $ gen dest license:choose
|
285 | * ```
|
286 | * @name license
|
287 | * @api public
|
288 | */
|
289 |
|
290 | app.task('choose', ['choose-license']);
|
291 | app.task('license', ['choose-license']);
|
292 | app.task('choose-license', { silent: true }, function(callback) {
|
293 | app.questions.list('licenses', 'Which license do you want to write?', {
|
294 | default: 12, // <= index of the default license
|
295 | choices: [
|
296 | { name: ['Apache License 2.0'], value: 'apache-2.0' },
|
297 | { name: ['Artistic License 2.0'], value: 'artistic-2.0' },
|
298 | { name: ['BSD 2-clause "Simplified" License'], value: 'bsd-2-clause' },
|
299 | { name: ['BSD 3-clause "New" or "Revised" License'], value: 'bsd-3-clause' },
|
300 | { name: ['Creative Commons Zero v1.0 Universal'], value: 'cc0-1.0' },
|
301 | { name: ['Eclipse Public License 1.0'], value: 'epl-1.0' },
|
302 | { name: ['GNU Affero General Public License v3.0'], value: 'agpl-3.0' },
|
303 | { name: ['GNU General Public License v2.0'], value: 'gpl-2.0' },
|
304 | { name: ['GNU General Public License v3.0'], value: 'gpl-3.0' },
|
305 | { name: ['GNU Lesser General Public License v2.1'], value: 'lgpl-2.1' },
|
306 | { name: ['GNU Lesser General Public License v3.0'], value: 'lgpl-3.0' },
|
307 | { name: ['ISC License'], value: 'isc' },
|
308 | { name: ['MIT License'], value: 'mit' },
|
309 | { name: ['Mozilla Public License 2.0'], value: 'mpl-2.0' },
|
310 | { name: ['The Unlicense'], value: 'unlicense' }
|
311 | ]
|
312 | });
|
313 |
|
314 | app.ask('licenses', { save: false }, function(err, answers) {
|
315 | if (err) return callback(err);
|
316 | app.build(answers.licenses, callback);
|
317 | });
|
318 | });
|
319 |
|
320 | /**
|
321 | * Alias for the [license](#license) task, to allow this generator to be
|
322 | * run with the following command:
|
323 | *
|
324 | * ```sh
|
325 | * $ gen license
|
326 | * ```
|
327 | * @name default
|
328 | * @api public
|
329 | */
|
330 |
|
331 | app.task('default', { silent: true }, ['choose-license']);
|
332 | };
|
333 |
|
334 | /**
|
335 | * Generate a file
|
336 | */
|
337 |
|
338 | function file(app, name) {
|
339 | return app.src(`templates/${name}.tmpl`, { cwd: __dirname })
|
340 | .pipe(app.renderFile('*'))
|
341 | .pipe(app.conflicts(app.cwd))
|
342 | .pipe(app.dest(app.cwd));
|
343 | }
|