Refactor new task.
This commit is contained in:
parent
2ff9928e13
commit
78f94180dc
1 changed files with 37 additions and 27 deletions
|
@ -7,6 +7,38 @@ Neither group-id nor artifact-id may contain slashes."
|
|||
[clojure.java.io :only [file]]
|
||||
[clojure.contrib.string :only [join]]))
|
||||
|
||||
(defn write-project [project-dir project-name]
|
||||
(.mkdirs (file project-dir))
|
||||
(spit (file project-dir "project.clj")
|
||||
(str "(defproject " project-name " \"1.0.0-SNAPSHOT\"\n"
|
||||
" :description \"FIXME: write\"\n"
|
||||
" :dependencies [[org.clojure/clojure \"1.2.0-beta1\"]\n "
|
||||
" [org.clojure/clojure-contrib \"1.2.0-beta1\"]])")))
|
||||
|
||||
(defn write-implementation [project-dir project-clj project-ns]
|
||||
(.mkdirs (.getParentFile (file project-dir "src" project-clj)))
|
||||
(spit (file project-dir "src" project-clj)
|
||||
(str "(ns " project-ns ")\n")))
|
||||
|
||||
(defn write-test [project-dir test-ns project-ns]
|
||||
(.mkdirs (.getParentFile (file project-dir "test" (ns->path test-ns))))
|
||||
(spit (file project-dir "test" (ns->path test-ns))
|
||||
(str "(ns " (str test-ns)
|
||||
"\n (:use [" project-ns "] :reload-all)"
|
||||
"\n (:use [clojure.test]))\n\n"
|
||||
"(deftest replace-me ;; FIXME: write\n (is false "
|
||||
"\"No tests have been written.\"))\n")))
|
||||
|
||||
(defn write-readme [project-dir artifact-id]
|
||||
(spit (file project-dir "README")
|
||||
(join "\n\n" [(str "# " artifact-id)
|
||||
"FIXME: write description"
|
||||
"## Usage" "FIXME: write"
|
||||
"## Installation" "FIXME: write"
|
||||
"## License" "Copyright (C) 2010 FIXME"
|
||||
(str "Distributed under the Eclipse Public"
|
||||
" License, the same as Clojure.\n")])))
|
||||
|
||||
(defn new
|
||||
"Create a new project skeleton.
|
||||
lein new [group-id/]artifact-id [project-dir]
|
||||
|
@ -18,38 +50,16 @@ Neither group-id nor artifact-id may contain slashes."
|
|||
(let [project-name (symbol project-name)
|
||||
group-id (namespace project-name)
|
||||
artifact-id (name project-name)]
|
||||
(.mkdirs (file project-dir))
|
||||
(spit (file project-dir "project.clj")
|
||||
(str "(defproject " project-name " \"1.0.0-SNAPSHOT\"\n"
|
||||
" :description \"FIXME: write\"\n"
|
||||
" :dependencies [[org.clojure/clojure \"1.2.0-beta1\"]\n"
|
||||
" [org.clojure/clojure-contrib \"1.2.0-beta1\"]])"))
|
||||
(write-project project-dir project-name)
|
||||
(let [prefix (.replace (str project-name) "/" ".")
|
||||
project-ns (str prefix ".core")
|
||||
test-ns (str prefix ".test.core")
|
||||
project-clj (ns->path project-ns)
|
||||
test-clj (ns->path test-ns)]
|
||||
(.mkdirs (file project-dir "test"))
|
||||
(.mkdirs (.getParentFile (file project-dir "src" project-clj)))
|
||||
(spit (file project-dir "src" project-clj)
|
||||
(str "(ns " project-ns ")\n"))
|
||||
(.mkdirs (.getParentFile (file project-dir "test" test-clj)))
|
||||
(spit (file project-dir "test" test-clj)
|
||||
(str "(ns " (str test-ns)
|
||||
"\n (:use [" project-ns "] :reload-all)"
|
||||
"\n (:use [clojure.test]))\n\n"
|
||||
"(deftest replace-me ;; FIXME: write\n (is false "
|
||||
"\"No tests have been written.\"))\n"))
|
||||
project-clj (ns->path project-ns)]
|
||||
(spit (file project-dir ".gitignore")
|
||||
(join "\n" ["pom.xml" "*jar" "lib" "classes"]))
|
||||
(spit (file project-dir "README")
|
||||
(join "\n\n" [(str "# " artifact-id)
|
||||
"FIXME: write description"
|
||||
"## Usage" "FIXME: write"
|
||||
"## Installation" "FIXME: write"
|
||||
"## License" "Copyright (C) 2010 FIXME"
|
||||
(str "Distributed under the Eclipse Public"
|
||||
" License, the same as Clojure.\n")]))
|
||||
(write-implementation project-dir project-clj project-ns)
|
||||
(write-test project-dir test-ns project-ns)
|
||||
(write-readme project-dir artifact-id)
|
||||
(println "Created new project in:" project-dir))))
|
||||
([project-name] (leiningen.new/new project-name
|
||||
(name (symbol project-name)))))
|
||||
|
|
Loading…
Reference in a new issue