Unified CLI. Commands dispatch through lang maps.
This namespace is the app — it explicitly requires each built-in lang, which triggers its self-registration in meme.registry. The registry itself imports no langs; adding a new built-in means a one-line require here plus the lang's own register-builtin! call.
Unified CLI. Commands dispatch through lang maps. This namespace is the app — it explicitly requires each built-in lang, which triggers its self-registration in meme.registry. The registry itself imports no langs; adding a new built-in means a one-line require here plus the lang's own register-builtin! call.
(-main & args)CLI entry point. Parses args and dispatches to subcommands.
CLI entry point. Parses args and dispatches to subcommands.
(build {:keys [file files out lang]})AOT-compile .meme sources to JVM bytecode.
Pipeline: transpile to a staging dir (fixed at target/meme), then
spawn clojure with that dir on the classpath and run
clojure.core/compile on each discovered namespace. Output is
.class files in --out (default target/classes).
Meme stops at bytecode — JAR packaging stays in your own tools.build layer. For finer control (skip the staging dir, use the meme loader at compile time, or integrate with an existing build.clj), see the recipes in doc/language-reference.md.
AOT-compile .meme sources to JVM bytecode. Pipeline: transpile to a staging dir (fixed at `target/meme`), then spawn `clojure` with that dir on the classpath and run `clojure.core/compile` on each discovered namespace. Output is `.class` files in `--out` (default `target/classes`). Meme stops at bytecode — JAR packaging stays in your own tools.build layer. For finer control (skip the staging dir, use the meme loader at compile time, or integrate with an existing build.clj), see the recipes in doc/language-reference.md.
(format-files opts)Format meme source files in canonical style.
Reads .meme-format.edn from the working directory (walking up) if
present; its settings are applied as defaults under CLI flags.
Format meme source files in canonical style. Reads `.meme-format.edn` from the working directory (walking up) if present; its settings are applied as defaults under CLI flags.
(inspect-lang {:keys [lang]})Print diagnostic info about the current lang configuration.
Print diagnostic info about the current lang configuration.
(repl {:keys [lang] :as opts})Start an interactive meme REPL.
Start an interactive meme REPL.
(run {:keys [file lang rest-args] :as opts})Run a meme source file. Requires :file in opts. Binds command-line-args to the user's args (excluding the command verb and filename). The lang's :run installs the loader by default.
Run a meme source file. Requires :file in opts. Binds *command-line-args* to the user's args (excluding the command verb and filename). The lang's :run installs the loader by default.
(to-clj opts)Convert meme files to Clojure and print to stdout or write to .clj files.
Convert meme files to Clojure and print to stdout or write to .clj files.
(to-meme opts)Convert Clojure files to meme and print to stdout or write to .meme files.
Convert Clojure files to meme and print to stdout or write to .meme files.
(transpile-meme {:keys [file files out lang] :as opts})Transpile .meme files to .clj in a separate output directory. Preserves relative paths. Output can be added to :paths in deps.edn so that require, load-file, and nREPL all work without runtime patching.
Transpile .meme files to .clj in a separate output directory. Preserves relative paths. Output can be added to :paths in deps.edn so that require, load-file, and nREPL all work without runtime patching.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |