Skip to content

Commit

Permalink
Merge pull request #26 from michaelklishin/directory-structure-fix
Browse files Browse the repository at this point in the history
Directory structure fix
  • Loading branch information
technomancy committed Apr 27, 2012
2 parents d47c54b + bcfdd83 commit 1471a66
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 4 deletions.
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(defproject lein-newnew "0.2.7"
(defproject lein-newnew "0.2.8"
:description "A Leiningen plugin for generating new projects based on templates."
:dependencies [[stencil "0.2.0"]
[bultitude "0.1.5"]]
Expand Down
7 changes: 4 additions & 3 deletions src/leiningen/new/default.clj
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
(ns leiningen.new.default
"Generate a basic project."
(:use [leiningen.new.templates :only [renderer sanitize year
->files sanitize-ns]]))
->files sanitize-ns qualified-name-to-path]]))

(defn default
"A general project template."
[name]
(let [render (renderer "default")
data {:name (sanitize-ns name)
:sanitized (sanitize name)
:nested-dirs (qualified-name-to-path name)
:year (year)}]
(println "Generating a project called" name "based on the 'default' template.")
(->files data
["project.clj" (render "project.clj" data)]
["README.md" (render "README.md" data)]
[".gitignore" (render "gitignore" data)]
["src/{{sanitized}}/core.clj" (render "core.clj" data)]
["test/{{sanitized}}/core_test.clj" (render "test.clj" data)])))
["src/{{nested-dirs}}/core.clj" (render "core.clj" data)]
["test/{{nested-dirs}}/core_test.clj" (render "test.clj" data)])))
10 changes: 10 additions & 0 deletions src/leiningen/new/templates.clj
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,16 @@
[s]
(string/replace s #"-" "_"))

(defn qualified-name-to-path
"Constructs directory structure from fully qualified artifact name:
myproject creates src/myproject/* directory
mygroup.myproject creates src/mygroup/myproject/* directory
and so on. Uses platform-specific file separators."
[s]
(-> s (sanitize) (string/replace #"\." java.io.File/separator)))

(defn sanitize-ns
"Returns project namespace name from (possibly group-qualified) project name:
Expand Down

0 comments on commit 1471a66

Please sign in to comment.