5.4 KiB
- For 1.4.0 or later
- add option to use ~/.m2-based classpath instead of copying to lib/?
- plugin task for managing/upgrading plugins
- shell wrappers should support multiple versions
- merge lein-search features?
- merge lein-run task?
- classifiers for specifying what clojure version to use?
- test selectors using metadata; run a subset of tests
- a list of dirs to include in the jar when building
- re-compile all deps with current clojure version
- spin lancet off into its own dependency
- fail gracefully when run without an Internet connection (Issue #100)
- improve test coverage
- 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
- 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)
- Plugin ideas
- Git-aware dependencies (experimental back-burner idea)
#-- mode: org --
Leiningen TODOs
See also http://github.com/technomancy/leiningen/issues
For 1.4.0 or later
TODO add option to use ~/.m2-based classpath instead of copying to lib/?
It looks like it would be easy to stop copying things into lib/ and just use ant's notion of the project's dependencies to construct a classpath that references jars straight from ~/.m2. This should be optional and not the default since it will break M-x swank-clojure-project and possibly other things that make the same assumption.
TODO 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.
TODO shell wrappers should support multiple versions
We could write out a different "foo-$VERSION" shell wrapper for each version of a project that gets installed and then have the plain "foo" script look for a $VERSION env var if it's set, and if not just fall back to the latest.
TODO merge lein-search features?
This plugin is great; we should think about taking it into Leiningen itself.
TODO merge lein-run task?
Ditto; this is something useful that many projects need.
TODO classifiers for specifying what clojure version to use?
As more versions of Clojure start to exist, libraries may want to publish different branches that target different versions of Clojure itself. Classifiers may be the way to separate these out?
TODO 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.
TODO a list of dirs to include in the jar when building
Some people have requested this.
TODO re-compile all deps with current clojure version
Another thing that's going to start becoming more important as more Clojure versions are introduced.
TODO spin lancet off into its own dependency
I've never felt comfortable about simply keeping it inline.
TODO fail gracefully when run without an Internet connection (Issue #100)
TODO improve test coverage
For 1.3.0
DONE specify min. lein version in project.clj
DONE :omit-source
DONE lein install $PROJECT (works outside project root)
Possibly take some of this from cljr?
DONE write shell wrappers on install
DONE include shell wrapper in jar file from template
DONE set arbitrary jar metadata
DONE errors in read-project should show filename
DONE user-level plugin installation and activation
DONE user-level config file (with hook list)
DONE get no-project-needed from arglist
DONE argument chaining
DONE interactive task
DONE resources in generated pom
For 1.2.0
DONE Fix self-build clean problem
DONE Don't catch reader exceptions unless they are from ^D
DONE document checkout dependencies
DONE Re-enable rlwrap
DONE Move the intro into a tutorial
DONE bin script has stabilized; self-install for dev versions should work
DONE accept list of namespaces to compile from command-line options
DONE document version ranges
DONE include lib/dev in find-lib-jars
DONE document plugin creation
DONE document all known project.clj keys
DONE disable frickin [null] logging from ant (come on srsly)
DONE recover from missing test exit map gracefully
DONE Help task should display arglist
DONE walk up the filesystem to find project.clj
DONE make inter-task dependencies honor hooks
DONE wire repl task up to socket repl
DONE allow warn-on-reflection to be turned on in project.clj
DONE Expose hooks in built-in tasks so plugins may extend them
DONE make org.clojure implied for clojure/contrib deps
DONE better way to force setFork in eval-in-project
DONE rename :namespaces key in project.clj
DONE include version in jar filenames
DONE classpath task to just print configured classpath
DONE move repl task from shell script to clojure code
For 1.1.0
DONE upgrade task (patch submitted)
DONE doc generation (autodoc plugin)
For 1.0
DONE Remove install task dependency on having Maven installed Phil
DONE Use -Xbootclasspath where possible Dan
DONE Don't write manifest, pom, etc. to disk when jarring Dan
DONE Don't put uberjar in ~/.m2 Phil
DONE Perform compilation in either a subprocess or with a separate classloader
DONE Allow test task to take namespaces as an argument
DONE Fix eval-in-project to let plugins pass in extra args
DONE Resources directory added to classpath (for properties, etc)
Plugin ideas
metrics
LOC
complexity
time logs
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?