Leiningen TODOs
See also https://github.com/technomancy/leiningen/issues
- [X] Reduce verbosity of Aether. (#610)
- [X] Global offline flag. (#687)
- [X] Honor mirror for search indices (#281)
- [X] Allow search queries on any field. (#243)
- [X] Drop clojars snapshots from default repos (#241)
- [X] Remove mention of preview branch from docs, bin/lein
- [X] Deploy and configure clojars promotion functionality
- [X] Document releases repository on Clojars wiki
- [X] Move downloads to S3 (#885)
- [X] missing dependency resolution output
- [X] Merge lein-newnew into lein proper
- [X] Check for single-quote ${} in bin/lein
- [ ] nrepl RC2
- [ ] backslash issue in repl
- [ ] newnew broken on windows
- [ ] Prevent overwrites in Clojars (can happen post-RC)
- [X] Fast trampolining
- [X] Latest newnew
- [X] Updated :eval-in :classloader
- [X] Vector for :repositories
- [X] Fix middleware
- [X] Allow trampoline to work with chaining in do task (#665)
- [X] Store repl port on filesystem (#682)
- [X] Set nREPL middleware in profiles (#716)
- [X] OOM in repl with lots of output (#691)
- [X] Search indices on Central have moved (#683)
- [X] Better error messages on failed repl :connect (#723)
- [X] Document key generation (#721)
- [X] Honor hooks/metadata in from plugins (#401)
- [X] Address chaining issues in with-profile (#632)
- [X] Address gpg agent issues (#615)
- [X] Stale directory clutter (#589)
- [X] Fix de-dupe with :classifier/:extension (#645)
- [X] Check project for :scm (#640)
- [X] Mirror support (#271)
- [X] Only look up repo credentials when necessary (#657)
- [X] Allow jars to be signed, document in deploying guide. (#519)
- [X] Fix javac to abort on failure (#658)
- [X] Don’t re-extract native deps (#535)
- [X] Make offline profile use dev profile (#514) (LHF)
- [X] Fix $JVM_OPTS (#565)
- [X] Move lein-newnew plugin into default profile (#540)
- [X] Force checking of snapshots (#518) (LHF)
- [X] Pretty-print pom
- [X] deps :tree
- [X] Use blocking instead of polling for repl task (#433)
- [X] Show aliases in lein help (#407)
- [X] Use pomegranate to dynamically resolve missing “lein new” templates (newnew #12)
- [X] readme
- [X] plugin guide
- [X] tutorial
- [X] hacking guide (moved to leiningen-core readme)
- [X] migration guide
- [X] sample project.clj
- [X] deploy guide
- [X] Finish designing and implement profiles
- [X] Dynamic recalculating of classpath via pomegranate
- [X] Honor :plugins as separate from :dependencies
- [X] Rework prep function to ensure that AOT/javac happens when needed
- [X] Move pom generation to pomegranate or leiningen
- [X] More flexibility for jarring
- [X] Allow tasks to add in their own injections
- [X] Allow disabling of all injected code
- [X] Activate :test profile in test task
- [X] Resurrect native deps
- [X] Trampoline
- [X] Allow hooks to provide activate fn to avoid load-time side-effects
- [X] Hook up reply to nrepl for new repl task
- [X] Look for aliases in project.clj
- [X] javac (can we do this without ant?)
- [X] Get off snapshots (data.xml, reply)
- [X] Pass user-level repository auth settings on to pomegranate
- [X] Use ordered map for :dependencies and :repositories?
- [X] Project middleware
- [X] Top-level :exclusions
- [X] Better error messages for misformatted :dependencies/:repositories
- [X] Utility function for plugins to conditionally add dependencies
- [X] Update new task
- [X] Switch user-settings to checking :user profile sans project
- [X] Offline mode
- [X] classpath
- [X] clean
- [X] compile (minus transitive cleaning)
- [X] deps
- [X] test
- [X] jar (minus shell wrappers)
- [X] retest
- [X] run
- [X] new (merge from lein-newnew)
- [X] help (needs tests)
- [X] search
- [X] pom (steal from depot)
- [X] install (minus shell wrappers)
- [X] uberjar
- [X] deploy
- [X] System/exit in repl (#324)
- [X] interactive task takes full CPU (#346)
- [X] whole-namespace test selectors (#242)
- [X] Auto-exclusions for dev-deps and plugins (#375)
- [X] Investigate NPE on lein test (#388)
- [X] Bring back rlwrap (#381)
- [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
- Use -Xbootclasspath where possible
- Don’t write manifest, pom, etc. to disk when jarring
- Don’t put uberjar in ~/.m2
- 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)
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?