読者です 読者をやめる 読者になる 読者になる

(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

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 にはないし、プラグインも特別あるわけじゃなさそう。

ということで調べる為にツールをちょこっとこしらえた。

github.com

だいぶ雑にコード書いたのでアレがアレだけど、 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