From 60430ee6dfffbeb220a3e8fee7336d54313467bc Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Tue, 5 Feb 2019 20:30:13 -0400 Subject: Folded license-making program (legislator) into the Lux project proper (as licentia). --- stdlib/source/program/licentia.lux | 66 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 stdlib/source/program/licentia.lux (limited to 'stdlib/source/program/licentia.lux') diff --git a/stdlib/source/program/licentia.lux b/stdlib/source/program/licentia.lux new file mode 100644 index 000000000..29ecc7eab --- /dev/null +++ b/stdlib/source/program/licentia.lux @@ -0,0 +1,66 @@ +## 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 + [monad (#+ do)] + ["." parser]] + [data + ["." maybe] + ["." error] + ["." text + format + ["." encoding]] + [format + ["." json]]] + ["." cli (#+ program:)] + ["." io ("io/." Monad)] + [world + ["." file (#+ File)]] + [host (#+ import:)]] + [/ + ["/." input] + ["/." output]]) + +(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 + [?done (do io.Monad + [blob (:: file.JVM@System read input) + document (io/wrap (do error.Monad + [raw-json (encoding.from-utf8 blob) + json (|> raw-json + (:coerce java/lang/String) + java/lang/String::trim + (:: json.Codec 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))))) -- cgit v1.2.3