153 lines
6.9 KiB
Org Mode
153 lines
6.9 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
|
|
- make it easier to hook inside eval-in-project
|
|
- Quit using ant's Java task. It is horrible.
|
|
Try a custom classloader approach?
|
|
- Use Aether instead of maven-ant-tasks?
|
|
http://www.sonatype.com/people/2010/08/introducing-aether/
|
|
- Rename test-resources to dev-resources
|
|
Breaking change; needs to wait for a major version bump.
|
|
- 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.
|
|
- 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!
|
|
- 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.
|
|
- 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?
|
|
- a list of dirs to include in the jar when building
|
|
Some people have requested this.
|
|
- re-compile all deps with current clojure version
|
|
Another thing that's going to start becoming more important as more
|
|
Clojure versions are introduced.
|
|
- improve test coverage
|
|
- new push task based on clj-ssh
|
|
lein-clojars task doesn't support DSA keys
|
|
- 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.5.1
|
|
- Revert back to :warn on checksum failure.
|
|
- Fix LEIN_ROOT warning in bin/lein.
|
|
- Honor user-settings in more places.
|
|
- TODO: Place checksums when performing install.
|
|
* For 1.5
|
|
- 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
|
|
- 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 :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)
|
|
* 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?
|