aboutsummaryrefslogtreecommitdiff
path: root/lux-bootstrapper/src/lux.clj
diff options
context:
space:
mode:
authorEduardo Julian2020-12-04 01:13:01 -0400
committerEduardo Julian2020-12-04 01:13:01 -0400
commit8df63aae42c40ac0413ccfacc3b2e8eb72e00a15 (patch)
tree5e1eb6833398b8a67a2e3d0db4a615204a25f80f /lux-bootstrapper/src/lux.clj
parent0205e5146b50ab066d152fccda0fc8cef4eef852 (diff)
Re-named old luxc-jvm to lux-bootstrapper.
Diffstat (limited to 'lux-bootstrapper/src/lux.clj')
-rw-r--r--lux-bootstrapper/src/lux.clj35
1 files changed, 35 insertions, 0 deletions
diff --git a/lux-bootstrapper/src/lux.clj b/lux-bootstrapper/src/lux.clj
new file mode 100644
index 000000000..dc6066669
--- /dev/null
+++ b/lux-bootstrapper/src/lux.clj
@@ -0,0 +1,35 @@
+(ns lux
+ (:gen-class)
+ (:require [lux.base :as & :refer [|let |do return return* |case]]
+ [lux.compiler :as &compiler]
+ [lux.repl :as &repl]
+ [clojure.string :as string]
+ :reload-all)
+ (:import (java.io File)))
+
+(def unit-separator (str (char 31)))
+
+(defn- separate-paths
+ "(-> Text (List Text))"
+ [paths]
+ (-> paths
+ (string/replace unit-separator "\n")
+ string/split-lines
+ rest
+ &/->list))
+
+(defn -main [& args]
+ (|case (&/->list args)
+ (&/$Cons "release" (&/$Cons program-module (&/$Cons dependencies (&/$Cons source-dirs (&/$Cons target-dir (&/$Nil))))))
+ (&compiler/compile-program &/$Build program-module
+ (separate-paths dependencies)
+ (separate-paths source-dirs)
+ target-dir)
+
+ (&/$Cons "repl" (&/$Cons dependencies (&/$Cons source-dirs (&/$Cons target-dir (&/$Nil)))))
+ (&repl/repl (separate-paths dependencies)
+ (separate-paths source-dirs)
+ target-dir)
+
+ _
+ (println "Cannot understand command.")))