Skip to content

Latest commit

 

History

History
122 lines (119 loc) · 5.65 KB

todo.org

File metadata and controls

122 lines (119 loc) · 5.65 KB

#-*- mode: org -*-

Leiningen TODOs

See also http://github.com/technomancy/leiningen/issues

For 2.0

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.

For 1.4

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-search features?

This plugin is great; we should think about taking it into Leiningen itself.

merge lein-run task?

Ditto; this is something useful that many projects need.

merge lein-javac task

Also make the compile task run it where appropriate.

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.

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.

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.

fail gracefully when run without an Internet connection (Issue #100)

improve test coverage

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)

Possibly take some of this from cljr?

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)

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?