Fetching contributors…
Cannot retrieve contributors at this time
163 lines (159 sloc) 7.11 KB

#-*- mode: org -*-

Leiningen TODOs

See also

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

  • [ ] Remove deprecated functionality.
  • [ ] Quit using ant’s Java task. It is horrible. Try a custom classloader approach? or an alternate exec.
  • [ ] Use Aether instead of maven-ant-tasks? Could also allow us to fix :omit-default-repositories (#221)
  • [ ] Separate out LEIN_JVM_OPTS (#233)
  • [ ] 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?
  • [ ] improve search query parser
  • [ ] add ns-level test selectors
  • [ ] improve test coverage
  • [ ] suppress useless ant output in classpath calculation for :local-repo-classpath (#236)

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

  • [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/? 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.
  • [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

  • 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?