#-*- mode: org -*-
Leiningen TODOs
See also https://github.com/technomancy/leiningen/issues
- [X] Finish designing and implement profiles
- [ ] Further design on Project Middleware
- [ ] In-process eval-in-project
- [X] Dynamic recalculating of classpath via pomegranate
- [ ] Redesign repl task, possibly around nREPL
- [X] Honor :plugins as separate from :dependencies
- [ ] Add :dynamic metadata to clucy
- [ ] Update documentation
- [X] readme
- [X] plugin guide
- [X] tutorial
- [ ] hacking guide
- [ ] migration guide
- [ ] user settings
- [ ] deploy guide
- [ ] sample project.clj
- [ ] Move pom generation to pomegranate or leiningen
- [ ] Non-transitive AOT
- [X] More flexibility for jarring
- [ ] Mirror/proxy support, also for search indices
- [ ] Allow disabling of all injected code
- [ ] Drop clojars snapshots from default repos
- [X] classpath
- [X] clean
- [X] compile (minus transitive cleaning)
- [X] deps (minus native-deps and certain :repositories options)
- [X] test
- [X] jar (minus shell wrappers)
- [X] retest
- [X] run
- [X] new (merge from lein-newnew)
- [X] help (needs tests)
- [ ] pom (steal from depot)
- [ ] install (minus shell wrappers)
- [ ] uberjar
- [ ] repl (figure out nrepl integration)
- [ ] deps (native-deps and :repositories options)
- [ ] compile (transitive cleaning)
- [ ] shell wrappers
- [ ] deploy
- [ ] javac (can we do this without ant?)
- [ ] search
- [ ] trampoline
- [X] resources with eval-in-leiningen (#248)
- [X] fix :omit-default-repositories wrt central (#211)
- [X] deps should run an implicit clean
- [X] don’t let multiple versions of a plugin interfere with each other (#301)
- [X] non-jar deps on classpath (#244)
- [X] recover from error in interactive (#234)
- [X] use java class in run task (#249)
- [X] fix deploy with new maven-ant-tasks
- [X] upgrade hooke
- [X] make it easier to use :repl-options [:print clojure.pprint/pprint]
- [X] fix shutdown-agents with repl
- [X] don’t clear out lib/dev upon jarring (221)
- [X] support alternate main namespace for uberjar.
- [X] Trampoline functionality
- [X] move exit-after-tests check to eval-in-project (discuss on list?)
- [X] don’t freak out when attempting to download non-existent indices
- [X] improve error message for unconfigured deploy
- [X] make search work outside project
- [X] clear up home directory duality in Windows/MinGW
- [X] show total result count in search results
- [X] transitive native-deps support
- [X] make :repl-init change initial ns of repl and swank
- [X] more flexibility in search results
- [X] support ns/name in run task
- [X] add option to use ~/.m2-based classpath instead of copying to lib/
- [X] Merge lein-search
- [X] Merge lein-retest
- [X] Merge native-deps
- [X] Add leiningen.util.injected namespace
- [X] Move ns docstrings to :help-summary to allow AOT given CLJ-130.
- [X] Put :eval-in-lein deps in lib/dev for leiningen process access.
- [X] Revert back to :warn on checksum failure.
- [X] Fix LEIN_ROOT warning in bin/lein.
- [X] Honor user-settings in more places.
- unify auth options between :repositories and :deploy-to
- suppress socket closed stacktrace in interactive task
- checksum deps set; don’t re-download if unchanged
- allow whitelist for post-compile class file deletion
- fix warn-on-reflection for repl task (#176)
- explain how to do manual self-install if it fails
- failure to upgrade leaves lein as a zero-length file (#153)
- ensure project jar is last in uberjar (#178)
- investigate uberjar slowdown? (#160)
- socket timing issues with interactive tests
- connect to socket repl in interactive task
- :uberjar-exclusions?
- :all test-selector built-in
- test selectors need to support things like constantly, complement
- detect missing level of nesting in project.clj’s deps/dev-deps
- clear out non-transitive .class files after AOT Luc Prefontaine has code for this.
- plugin task for managing/upgrading plugins Manually copying jar files into ~/.lein/plugins is pretty lame. Let’s get a task to handle this. It could be implemented as a plugin at first, maybe.
- merge lein-run task? Ditto; this is something useful that many projects need.
- expose original pwd as property
- merge lein-javac task Also make the compile task run it where appropriate.
- test selectors using metadata; run a subset of tests We could have a :test-selectors key in project.clj that would map keywords to predicate functions. Then the test task could take a keyword argument and only run the subset of the tests for which calling the predicate on its metadata returns true.
- specify min. lein version in project.clj
- :omit-source
- lein install $PROJECT (works outside project root)
- write shell wrappers on install
- include shell wrapper in jar file from template
- set arbitrary jar metadata
- errors in read-project should show filename
- user-level plugin installation and activation
- user-level config file (with hook list)
- get no-project-needed from arglist
- argument chaining
- interactive task
- resources in generated pom
- Fix self-build clean problem
- Don’t catch reader exceptions unless they are from ^D
- document checkout dependencies
- Re-enable rlwrap
- Move the intro into a tutorial
- bin script has stabilized; self-install for dev versions should work
- accept list of namespaces to compile from command-line options
- document version ranges
- include lib/dev in find-lib-jars
- document plugin creation
- document all known project.clj keys
- disable frickin [null] logging from ant (come on srsly)
- recover from missing test exit map gracefully
- Help task should display arglist
- walk up the filesystem to find project.clj
- make inter-task dependencies honor hooks
- wire repl task up to socket repl
- allow \*warn-on-reflection\* to be turned on in project.clj
- Expose hooks in built-in tasks so plugins may extend them
- make org.clojure implied for clojure/contrib deps
- better way to force setFork in eval-in-project
- rename :namespaces key in project.clj
- include version in jar filenames
- classpath task to just print configured classpath
- move repl task from shell script to clojure code
- upgrade task (patch submitted)
- doc generation (autodoc plugin)
- Remove install task dependency on having Maven installed :Phil:
- Use -Xbootclasspath where possible :Dan:
- Don’t write manifest, pom, etc. to disk when jarring :Dan:
- Don’t put uberjar in ~/.m2 :Phil:
- Perform compilation in either a subprocess or with a separate classloader
- Allow test task to take namespaces as an argument
- Fix eval-in-project to let plugins pass in extra args
- Resources directory added to classpath (for properties, etc)
- metrics
- LOC
- complexity
- time logs
Talking with Rich after Emerging Langs day 1 Problem: you can pull in two versions of the same library transitively without realizing it if people fork on clojars. How do we detect this problem and de-dupe?
- What if artifacts could be correlated with the git rev that produced them?
- They have repository and sha1 metadata in their pom (but no history tree)
- Cross-correlate with a separate revision metadata store?