blob: 42af77bf2f488085658962118d4943a313bc7cd2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
## The licenses produced by this program are inspired by:
## Apache License (Version 2.0): https://www.apache.org/licenses/LICENSE-2.0
## Mozilla Public License (Version 2.0): https://www.mozilla.org/en-US/MPL/2.0/
## MIT/Expat License: https://opensource.org/licenses/MIT
## BSD licenses: https://en.wikipedia.org/wiki/BSD_licenses
## Commons Clause: https://commonsclause.com/
## Reciprocal Public License 1.5 (RPL-1.5): https://opensource.org/licenses/RPL-1.5
## The Parity Public License: https://licensezero.com/licenses/parity
## The Charity Public License: https://licensezero.com/licenses/charity
## Lerna black-list: https://github.com/lerna/lerna/pull/1616
## Common Public Attribution License Version 1.0 (CPAL-1.0): https://opensource.org/licenses/CPAL-1.0
## Eclipse Public License v2.0: https://www.eclipse.org/legal/epl-2.0/
(.module:
[lux #*
[control
[remember (#+ to-do)]
[monad (#+ do)]
["." parser]]
[data
["." maybe]
["." error]
["." text
format
["." encoding]]
[format
["." json]]]
["." cli (#+ program:)]
["." io ("io/." Monad<IO>)]
[world
["." file (#+ File)]]
[host (#+ import:)]]
[/
["/." input]
["/." output]])
(with-expansions [<expiry> (as-is "2019-04-01")]
(to-do <expiry> "Replace _.work with _.covered-work or _.licensed-work")
(to-do <expiry> "Create a short notice to add as a comment to each file in the _.work"))
(import: #long java/lang/String
(trim [] String))
(def: default-output-file "LICENSE")
(def: (success-message output)
(-> File Text)
(format "Your license has been made!" text.new-line
"Check the file " output "."))
(program: [{input (cli.named "--input" cli.any)}
{output (parser.default ..default-output-file
(cli.named "--output" cli.any))}]
(do io.Monad<IO>
[?done (do io.Monad<Process>
[blob (:: file.JVM@System read input)
document (io/wrap (do error.Monad<Error>
[raw-json (encoding.from-utf8 blob)
json (|> raw-json
(:coerce java/lang/String)
java/lang/String::trim
(:: json.Codec<Text,JSON> decode))
license (json.run json /input.license)]
(wrap (/output.license license))))]
(:: file.JVM@System write (encoding.to-utf8 document) output))]
(case ?done
(#error.Success _)
(wrap (log! (success-message output)))
(#error.Error message)
(wrap (log! message)))))
|