v0.4.1: Module system, incremental compile, Babashka CLI#5
Merged
Conversation
- Add read-project-config and compile-project-from-config to core.clj - Support :source-paths, :output-dir, :runtime (:bundled/:require) in clel.edn - CLI compile command now accepts zero args — finds clel.edn walking up from CWD - Add examples/multi-module/ with two-namespace example project - 413 tests, 2318 assertions, 0 failures Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add *project-exports* dynamic var for project-wide symbol visibility - analyze-symbol emits WARNING to stderr for unresolved qualified refs - Add scan-exports public API in analyzer - build-project-symbol-table does Pass 1 scan of all .cljel exports - compile-project now two-pass: survey exports, then compile with checks - 412 tests, 2332 assertions, 0 failures Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Resolve test file conflict — both branches added tests to core_test.clj, keep both test suites. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace Go CLI wrapper with a Babashka script (bin/clel) that supports: - clel compile (zero-arg, uses clel.edn project config) - clel compile <file.cljel> [-o out.el] - clel compile <dir/> [-o outdir/] - clel version Prefers uberjar ($CLEL_JAR or ~/.local/lib/clel.jar), falls back to clojure -M -e for compilation. Propagates subprocess exit codes cleanly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add bb/clel/watch.clj — a Babashka-compatible namespace that watches a directory for .cljel file changes and recompiles via polling. Uses babashka.fs/glob + last-modified-time comparison instead of fsnotify (unavailable in Babashka). Accepts a compile-fn callback so the caller controls compilation dispatch (jar vs clojure CLI). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move CLI logic from bin/clel into bb/clel/main.clj as a proper namespace (clel.main), make bin/clel a thin launcher that requires and delegates to it, and add :bbin/bin to bb.edn so the tool can be installed with `bbin install`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
:refer :allwildcard imports + incremental compilation with.clel-cache/manifest.ednmtime trackingbbscript — installable viabbin install io.github.BuddhiLW/clojure-elisp.cljelfile watcher with auto-recompileChanges
src/clojure_elisp/analyzer.clj—:refer :allsupport inparse-require-spec+build-ns-envsrc/clojure_elisp/core.clj— Incremental compilation (manifest read/write, stale detection, dependency propagation)bb/clel/main.clj— Babashka CLI with compile/watch/version subcommandsbb/clel/watch.clj— Polling file watcher with debouncebb.edn— bbin-installable configbin/clel— Thin bb launcherREADME.md— Updated installation docs, bbin instructionsTest plan
bin/clel version→clel 0.4.1bb -m clel.main version→clel 0.4.1make build install→~/.local/lib/clel.jarupdated🤖 Generated with Claude Code