Leiningen TODOs See also https://github.com/technomancy/leiningen/issues * For 2.0.0 ** 2.0.0-final - [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) ** 2.0.0-preview9 - [X] Fast trampolining - [X] Latest newnew - [X] Updated :eval-in :classloader - [X] Vector for :repositories - [X] Fix middleware ** 2.0.0-preview8 - [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) ** 2.0.0-preview7 - [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) ** preview4 - [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) ** Intermediate - [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) ** Documentation - [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 ** Changes for preview release - [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 ** Adapt existing tasks to new API - [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 * For 1.7.0 - [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) * For 1.6.2 - [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 * For 1.6.1 - [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. * For 1.6.0 - [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 * For 1.5.1 - [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. * For 1.5.0 - 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) * For 1.4.0 - 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. * For 1.3.0 - 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 * For 1.2.0 - 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 * For 1.1.0 - upgrade task (patch submitted) - doc generation (autodoc plugin) * For 1.0 - 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) * Git-aware dependencies (experimental back-burner idea) 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?