aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/compositor.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/program/compositor.lux')
-rw-r--r--stdlib/source/program/compositor.lux15
1 files changed, 15 insertions, 0 deletions
diff --git a/stdlib/source/program/compositor.lux b/stdlib/source/program/compositor.lux
index a6b85ccf0..557e9d22a 100644
--- a/stdlib/source/program/compositor.lux
+++ b/stdlib/source/program/compositor.lux
@@ -20,6 +20,8 @@
[collection
["." dictionary]
["." row (#+ Row)]]]
+ [time
+ ["." instant]]
["." world #_
["." file (#+ File Path)]
["#/." program]
@@ -71,6 +73,18 @@
(#try.Success output)
(wrap output))))
+(def: (timed process)
+ (All [a]
+ (-> (Promise (Try a)) (Promise (Try a))))
+ (do promise.monad
+ [#let [start (io.run instant.now)]
+ output process
+ #let [_ ("lux io log" (|> (io.run instant.now)
+ (instant.span start)
+ %.duration
+ (format "Duration: ")))]]
+ (wrap output)))
+
(def: (package! monad file_system [packager package] static archive context)
(All [!] (-> (Monad !) (file.System !) [Packager Path] Static Archive Context (! (Try Any))))
(for {@.old
@@ -132,6 +146,7 @@
(case service
(#/cli.Compilation compilation)
(<| (or_crash! "Compilation failed:")
+ ..timed
(do (try.with promise.monad)
[#let [[compilation_sources compilation_libraries compilation_target compilation_module] compilation]
import (/import.import (get@ #platform.&file_system platform) compilation_libraries)