/
plugin.clj
25 lines (24 loc) · 1.01 KB
/
plugin.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(ns leiningen.new.plugin
(:require [leiningen.new.templates :refer [renderer sanitize year date ->files]]
[leiningen.core.main :as main]))
(defn plugin
"A leiningen plugin project template."
[^String name]
(let [render (renderer "plugin")
unprefixed (if (.startsWith name "lein-")
(subs name 5)
name)
data {:name name
:unprefixed-name unprefixed
:sanitized (sanitize unprefixed)
:year (year)
:date (date)}]
(main/info (str "Generating a fresh Leiningen plugin called " name "."))
(->files data
["project.clj" (render "project.clj" data)]
["README.md" (render "README.md" data)]
[".gitignore" (render "gitignore" data)]
[".hgignore" (render "hgignore" data)]
["src/leiningen/{{sanitized}}.clj" (render "name.clj" data)]
["LICENSE" (render "LICENSE" data)]
["CHANGELOG.md" (render "CHANGELOG.md" data)])))