aboutsummaryrefslogtreecommitdiff
path: root/src/lustre.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'src/lustre.gleam')
-rw-r--r--src/lustre.gleam31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/lustre.gleam b/src/lustre.gleam
index 3151a1a..7aeb6b4 100644
--- a/src/lustre.gleam
+++ b/src/lustre.gleam
@@ -158,16 +158,45 @@
// IMPORTS ---------------------------------------------------------------------
+import argv
import gleam/bool
import gleam/dict.{type Dict}
-import gleam/dynamic.{type Decoder}
+import gleam/dynamic.{type Decoder, type Dynamic}
import gleam/erlang/process.{type Subject}
import gleam/otp/actor.{type StartError}
import gleam/result
+import glint
+import lustre/cli/add
+import lustre/cli/build
+import lustre/cli/try
import lustre/effect.{type Effect}
import lustre/element.{type Element, type Patch}
import lustre/internals/runtime
+// MAIN ------------------------------------------------------------------------
+
+/// This function exists so you can run helpful Lustre utilities from the command
+/// line using `gleam run -m lustre`. For a proper help message run:
+///
+/// ```sh
+/// gleam run -m lustre -- --help
+/// ```
+///
+/// 🚨 If you're just using Lustre as a library, *you can ignore this function*.
+///
+pub fn main() {
+ let args = argv.load().arguments
+
+ glint.new()
+ |> glint.as_gleam_module
+ |> glint.with_name("lustre")
+ |> glint.add(at: ["add", "esbuild"], do: add.esbuild())
+ |> glint.add(at: ["build", "app"], do: build.app())
+ |> glint.add(at: ["build", "component"], do: build.component())
+ |> glint.add(at: ["try"], do: try.run())
+ |> glint.run(args)
+}
+
// TYPES -----------------------------------------------------------------------
/// Represents a constructed Lustre application that is ready to be started.