lein new <template> your-app-name の template に指定出来る template の一覧を作った
Clojure を始めてからいくつかの GitHub リポジトリをみていると「 lein-template あるから lein new foobar your-app-name ってすればいいよ」みたいなのを稀によく見かける。
けど、 leiningen がデフォルトで提供しているテンプレートの数ってそんなに多くないはずだし、そんな名前のテンプレートをインストールした記憶もない。じゃあ、その依存性ってどーやって解決しているの?っての思ったけど、どうもコードを読むと leiningen の new タスクの中でリポジトリを検索して自動的に引っ張ってきていることがわかる。
leiningen/new.clj at 9c5192e6520fb96aa625313a468e0143001f54ca · technomancy/leiningen · GitHub
と、納得したところで、具体的に現時点でプロジェクトテンプレートって幾つあるんだろう?という疑問が出てきた。というか、テンプレートの一覧みたいなのを見たいと思った。けど、そんなコマンド leiningen にはないし、プラグインも特別あるわけじゃなさそう。
ということで調べる為にツールをちょこっとこしらえた。
だいぶ雑にコード書いたのでアレがアレだけど、 lein search lein-template の結果をテキストファイルにしてそのパスを食わせるとテンプレート名と最新バージョンの一覧を返してくれる。まぁここまでやったら leiningen のプラグインにしてしまってもいいんだけど、どうせ誰もそんなニッチな情報知りたいなんて思うことそうそうないだろうから、とりあえずこれでいいやと満足している。
leiningen 用のテンプレートは "foobar/lein-template" という名前規則があるようで、 leiningen 自体もその規則に沿って名前解決をしている。
leiningen/new.clj at 9c5192e6520fb96aa625313a468e0143001f54ca · technomancy/leiningen · GitHub
最終的に僕が得た結果は下に貼っておくけど、今現時点で 315 個もテンプレートあるらしい。 315 個も把握できないなぁというのが正直なとこですが、メンテされてないやつとかも普通にあってカオスだなぁと思いました。
live-static-app 0.1.7-RELEASE huapp 0.1.0-SNAPSHOT juxt.training.exercises.webapp 0.0.1 org.convana.plugin 1.0.0-SNAPSHOT chestnut 0.7.0 jme3 0.1.4 cljs-app 0.1.0 sqweb 0.1.0 trapperkeeper 1.1.0 thing-babel 0.2.3 pedestal-service 0.4.0 did-datomic-free 0.1.1 cljsbuild-skeleton 0.2.1 quil 2.2.5.0 org.clojars.agile_jordi.midje 0.1.0-SNAPSHOT om-starter 0.2.0 phoenix-api 0.1.1 fw1 0.3.3 speclj 3.2.0 quil-cljs 2.2.5.0 monolith 0.1.1-SNAPSHOT pirlib 0.1.0 cryogen 0.2.20 sean-web-app 0.1.0 cookbook-storm-project 0.2.0 dog 0.5.14 retro-fever 0.3.0 kastermastandard 0.2.0 starter 1.3.2 cljs-node 0.1.3 foreclojure 0.1.1 web-mongodb-ch-template 0.1.0 far-lib 0.1.10 jessitron 0.1.1 frege 3.22.367-i om-bower 0.0.6 cahoot 0.1.6 capstan 0.1.0 jubot 0.0.1 www 0.1.7 caribou 0.14.0 ide-files 0.1.0 backrest 1.0.0 blanc 1.0.2 phoenix-webapp 0.1.1 mies-brepl 0.1.2 reloaded-uberrepl 0.2.0 kaj-default 0.1.0-SNAPSHOT compojure-nginx-clj-docker-eb 0.1.0-SNAPSHOT cljsbuild-template-new 0.1.0-SNAPSHOT webdb2 0.1.0-SNAPSHOT pedestal-micro 0.3.1 kasyaar-test2 0.1.0-SNAPSHOT joodo 2.1.2 figwheel-node 0.1.1 nwcljs 0.3.2 webdb 0.1.0-SNAPSHOT reverie 1.0-SNAPSHOT cljs-ring 0.0.5 onyx-plugin 0.5.3 limonada 0.1.0-SNAPSHOT vertx 0.3.1 flat-layout-web 0.1.0 clj-wamp 0.1.7 org.clojars.blischalk.node-webkit-cljs 0.1.1-SNAPSHOT misaki 0.0.1-alpha dotcloud 0.4.0 angular-cl2 0.1.0-SNAPSHOT foo-bar 0.2.0 lein-create-template nil jruby-sinatra 0.1.0 pudge-app 0.1.0 descjop 0.1.2 http-kit 1.0.0-SNAPSHOT bn-service 1.0.2 bframeworkapp 0.1.0-SNAPSHOT noir-ring 1.0.0 clarp 0.1.2 dog-lib 0.3.2 acorn 0.7.0 tux 0.3.1 mies-node 0.2.2 vaadin 0.1.0 causeway-template 0.4.0-RC far-app 0.1.10 reloaded2 0.2.6 brim 0.0.1 blank-zurb-website 0.1.0-SNAPSHOT rc 0.1.1 reagent-figwheel 0.1.4 dockerised-web-app 0.1.3 cljs-template-one 0.1.5 angularjs-app 0.1.1 labs-template 0.1.0-SNAPSHOT naive-http-kit 0.1.0-SNAPSHOT mockup 0.1.0 atw-api 0.1.5 wwa-windows 0.1.0 aviary 0.1.12 toyapp 0.1.0-SNAPSHOT specljs 3.2.0 fu-template 0.1.0 flat-layout 0.1.2 ncljs 0.1.1 static-cljs 0.1.2 cljsr 0.1.0-SNAPSHOT favfeed-template 0.1.0-SNAPSHOT aperiodic-cljs 0.1.0 lein-servlet 0.4.1 simpleudf 0.1.2 basic-web-mh-template 0.1.1 cljs-skeleton 0.0.1 cli-app 0.1.2 experement 0.1.1 cljx-start-lib 0.1.3 clj-website 0.1.1 darzana 0.2.0-SNAPSHOT tenzing 0.3.1 juxt-training-exercises-webapp 0.0.3 lein-templater nil serv 0.1.5 vom 0.1.0 hoplon-castra 0.4.0 leipzig 0.1.0 basic-web-cs-template 0.1.1 lein-webapp-template 1.6.0 cljs-test 0.2.5 parseapp 0.7.0 om-intermediate-template 0.1.12 clj-cljs-weasel 0.1.2 reloaded 0.1.3 clojurescript-worksheet 0.1.0-SNAPSHOT foundation-app 0.1.2 reloadable-app 0.1.3 allergy-template 0.1.0 kasyaar-test3 0.1.0-SNAPSHOT reloadable-compojure 0.4.3 angular-simple 0.1.6 cljs-webapp 0.1.9 yawt 0.4.1 gpl3p 0.1.4 misaki-compiler 0.0.6 mies-weasel 0.1.1-SNAPSHOT back-end-template 0.2.3 sonian 0.1.1 org.clojars.kiran 0.2.1 vertx-template 0.1.5-RELEASE cljs-repl-project 0.1.0 web-app-starter 0.2.0-SNAPSHOT skel 1.0.2 reagent-seed 0.2.1 clojurebridge 0.1.0 heroku 0.3.0 cljs-async 0.1.1 mr-clojure 1.0.7 script 0.0.5 enlive-tutorial 0.1.0 cljsnwk 0.1.0-SNAPSHOT play-clj 0.4.6.1 nocore 0.2.1 clj-eden-lib 0.2.7 mala 0.2.1 mjstarter 0.1.1 om-with-tests 0.0.6 zephyr-re-frame 0.2.0 sethtrain 0.3.0 om-fireplace-brepl 0.1.0 reagent 0.7.4 qml-cljs 0.1.0-SNAPSHOT om-cljs 0.1.1 kasyaar-test1 0.1.0-SNAPSHOT gatling 0.1.2 uochan-heroku 0.0.2 gizmo-web 1.0.0-alpha4-SNAPSHOT figwheel 0.2.5 om-async-tut 0.1.9 node-cljs 0.1.4 storm-project 0.1.0 cbilson-web-app 0.1.1 kasyaar-test 0.1.0-SNAPSHOT clojurewerkz 1.7.0 duct 0.1.0 kick 0.1.3 casper-cljs 0.2.0 reagent-liveedit 0.1.6 slack-app 0.1.0-SNAPSHOT cascalog-avro 0.2.0 closp 0.1.11 amp 0.8.0 pallet 0.2.18 satori 0.1.0 zenweb 0.1.22 sim-test 0.1.1 commandlineapp 0.1.0-SNAPSHOT ringo 0.1.0 nsfw 0.6.11 finagle-clojure 0.3.0 web-app 0.1.8 elimai 0.1.3 appfgo 0.5.1 gcm-project 0.1.2 noir 1.3.0 reloaded-with-tests 0.1.3-SNAPSHOT weixin-on-heroku 0.0.1 cljx-start 0.3.1 basic-service 1.0.0 compojure-app 0.4.7 lt-plugin 0.5.0 experiment 0.1.4 cccp 0.1.2 cljs-exnihilo 0.1.4 hoplon 2.4.0 causeway 0.4.2 working-template 0.2.0-SNAPSHOT vagrant 0.1.0 outfit 0.1.0 angular 0.1.7 generators 0.2.1 foxy 0.1.4 clj-webapp 0.1.0-SNAPSHOT org.clojurs.schmidh.fu-template 0.1.0 qbits 1.1.0 cljs-kickoff 0.1.5 wwa-windows-om 0.1.0 enfocus-template 0.1.0 om-weasel 0.1.1 spa-template 0.1.6 lambdacd 0.2.0 pallet-crate 0.1.0 lein-clr 0.2.2 steve 0.1.0 apijr 0.1.0-SNAPSHOT cljs-austin 0.2.1 dacom 0.1.2 reagent-project 0.1.3 cljminecraft 1.0.2 cljs-template 0.1.6 modular 0.7.2 groupid 0.2.0 kinematic-app 0.1.0 devcards 0.1.2 cordova-om 0.1.0 mondrian 0.1.1 fdsa 0.1.0 com.softwarecurmudgeon.reloaded 0.1.3 lein-gnome 0.1.0-SNAPSHOT org.clojars.kasyaar.http-kit 0.1.0-SNAPSHOT cljsjs-package 0.1.0 jarppes-om-app 0.1.2 express 0.1.0 my-website-template 0.3.0 road 0.1.0 koan 0.1.3 nodecljs 0.1.0 omr 0.1.0-SNAPSHOT compojure 0.4.2 lein-template-descjop 0.1.0 d3-app 0.2.0 mies-om 0.5.5 atw-om 0.3.1 piggieback 0.2.0 pedestal-app 0.3.0-SNAPSHOT cljs-init 0.1.0-SNAPSHOT basic-speclj-template 0.1.1 grafter 0.4.0 chrome-extension 0.1.6 screen6 0.1.0-SNAPSHOT hitokotonushi-template 0.1.0.1 migae 0.2.5 newnew-test-template 0.1.0 jkugiya 0.1.6-SNAPSHOT mies 0.5.3 ring-piggieback 0.1.0 ninja 0.0.1-SNAPSHOT wrom 0.1.0 frontend-happiness 0.0.1 lein-api-rest-template 1.0.0-SNAPSHOT cljsbuild-template 0.2.0 hlisp 0.1.0-SNAPSHOT fmn 0.1.9 basic-web-ch-template 0.1.1 blank-angular-website 0.1.0-SNAPSHOT basic-web-me-template 0.1.1 my-website-template-travis 0.3.0 with-gorilla 0.1.0-SNAPSHOT smtraining 0.0.2 liberagent 0.1.6-SNAPSHOT compojurefgo 0.4.1 gyag 0.9.0 compojure-api 0.10.0 splat 0.4.19 littleprinter 0.1.0 sonian-pedestal-immutant 0.1.1 om-start 0.0.7 luminus 2.2.9 beanstalk-docker-app 0.1.0 testtemplate 0.1.0-SNAPSHOT broken-template 0.1.0 kasyaar-http-kit 0.13.0 org.clojars.agofilo.cljsproj 0.1.0-SNAPSHOT ice 0.1.3 gsn-spa 0.1.0-SNAPSHOT sxm-clojure-ms 1.0.2-SNAPSHOT cljs-start 0.1.4 org.earthlingzephyr.re-frame 0.1.0 cljs-ws 0.0.1 qu 1.4.2-SNAPSHOT restful-app 0.1.6 web-rdbms-chk-template 0.1.1 jcf 0.1.0 basic 0.9.0 clover 0.1.0 cookbook-sample-template-clojure-cookbook 0.1.0-SNAPSHOT ken-cljs-2 0.1.3 browserific-app 0.2.0