141 lines
6.6 KiB
Org Mode
141 lines
6.6 KiB
Org Mode
#-*- mode: org -*-
|
|
#+startup: overview
|
|
#+startup: hidestars
|
|
#+TODO: TODO | INPROGRESS | DONE
|
|
|
|
Leiningen TODOs
|
|
|
|
See also https://github.com/technomancy/leiningen/issues
|
|
|
|
* Open Questions
|
|
** Aether: how would it integrate? Improvement over maven-ant-tasks?
|
|
** Tests in Nailgun: would it require a separate shell script?
|
|
** How could nonlinear versions be represented?
|
|
* For 2.0
|
|
** TODO make it easier to hook inside eval-in-project
|
|
** TODO Quit using ant's Java task. It is horrible.
|
|
Try a custom classloader approach?
|
|
** TODO Use Aether instead of maven-ant-tasks?
|
|
http://www.sonatype.com/people/2010/08/introducing-aether/
|
|
** TODO Rename test-resources to dev-resources
|
|
Breaking change; needs to wait for a major version bump.
|
|
** 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 Maven's notion of the project's dependencies to construct a
|
|
classpath that references jars straight from ~/.m2.
|
|
** TODO spin lancet off into its own dependency
|
|
I've never felt comfortable about simply keeping it inline. On the
|
|
other hand if we quit using ant then we can skip this.
|
|
Needs to not be in the default package!
|
|
** 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 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 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 improve test coverage
|
|
** TODO merge push task based on clj-ssh
|
|
lein-clojars task doesn't support DSA keys
|
|
** TODO integrate plugin task with lein-search
|
|
Would be better to be able to leave off version numbers
|
|
** TODO add search functionality based on standard mvn lucene indexes
|
|
lein-search is cool, but it would be better to interoperate with
|
|
the standard lucene index system that Maven repositories offer.
|
|
This would also mean getting Clojars to produce those indices.
|
|
* For 1.4
|
|
** DONE socket timing issues with interactive tests
|
|
** DONE connect to socket repl in interactive task
|
|
** DONE :uberjar-exclusions?
|
|
** DONE :all test-selector built-in
|
|
** DONE test selectors need to support things like constantly, complement
|
|
** DONE detect missing level of nesting in project.clj's deps/dev-deps
|
|
** DONE clear out non-transitive .class files after AOT
|
|
Luc Prefontaine has code for this.
|
|
** DONE 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.
|
|
** DONE merge lein-run task?
|
|
Ditto; this is something useful that many projects need.
|
|
** DONE expose original pwd as property
|
|
** DONE merge lein-javac task
|
|
Also make the compile task run it where appropriate.
|
|
** DONE 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
|
|
** 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?
|
|
** 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?
|