diff options
author | Tom Willemse | 2013-05-20 02:57:04 +0200 |
---|---|---|
committer | Tom Willemse | 2013-05-20 02:57:04 +0200 |
commit | a163906b15e20ae3b471f33b2a04629a51d9ea71 (patch) | |
tree | d62206ff97cc6af7a749ba1b58ad8f179086d099 | |
parent | b02f3310321d0ef51b6b04e9518558000ccf98cf (diff) | |
download | kaarvok-a163906b15e20ae3b471f33b2a04629a51d9ea71.tar.gz kaarvok-a163906b15e20ae3b471f33b2a04629a51d9ea71.zip |
Rename project to kaarvok
project-template was too general and used by other projects.
-rwxr-xr-x | kaarvok | 26 | ||||
-rw-r--r-- | kaarvok.el (renamed from project-template.el) | 109 | ||||
-rwxr-xr-x | pt | 27 |
3 files changed, 82 insertions, 80 deletions
@@ -0,0 +1,26 @@ +#!/bin/sh +## kaarvok --- Generate directory structures from templates +# Copyright (C) 2013 Tom Willemse <tom at ryuslash dot org> + +# This file is part of kaarvok. + +# kaarvok is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# kaarvok is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with kaarvok. If not, see <http://www.gnu.org/licenses/>. + +if [ "${#@}" -lt 2 ]; then + echo "Usage: $0 <template name> <destination>" + exit 1 +fi + +/usr/bin/emacs -Q -batch -l kaarvok.el -eval \ + "(kaarvok-create-project-from-template \"$1\" \"$2\")" diff --git a/project-template.el b/kaarvok.el index 51c254b..40be88a 100644 --- a/project-template.el +++ b/kaarvok.el @@ -1,4 +1,4 @@ -;;; project-template --- Generate dircetory structures from templates +;;; kaarvok --- Generate directory structures from templates ;; Copyright (C) 2013 Tom Willemse @@ -6,21 +6,20 @@ ;; Keywords: convenience ;; Package-Version: 0.1.0 -;; This file is part of project-template. +;; This file is part of kaarvok. -;; project-template is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation, either version 3 of the -;; License, or (at your option) any later version. +;; kaarvok is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. -;; project-template is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; kaarvok is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with project-template. -;; If not, see <http://www.gnu.org/licenses/>. +;; along with kaarvok. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: @@ -31,85 +30,88 @@ ;;; Code: -(defvar pt-templates-directory "~/.emacs.d/templates" +(defvar kaarvok-templates-directory "~/.emacs.d/templates" "Where templates are stored.") -(defvar pt-template-var-delimiter "$!" +(defvar kaarvok-template-var-delimiter "$!" "Strings used to delimit variable names.") -(defun pt-template-var-regexp () +(defun kaarvok-template-var-regexp () "Create the regexp which identifies a variable in a template." - (concat pt-template-var-delimiter - "\\([^" pt-template-var-delimiter " \t\n]+\\)" - pt-template-var-delimiter)) + (concat kaarvok-template-var-delimiter + "\\([^" kaarvok-template-var-delimiter " \t\n]+\\)" + kaarvok-template-var-delimiter)) -(defvar pt-value-alist nil - "A placeholder where replacement values will be kept. This is - let-bound when `pt-create-project-from-template' is called and - should not be edited directly.") +(defvar kaarvok-value-alist nil + "A placeholder where replacement values will be kept. -(defun pt-replace-all (from to str) +This is let-bound when `kaarvok-create-project-from-template' is +called and should not be edited directly.") + +(defun kaarvok-replace-all (from to str) "Simply replace all occurrences of FROM with TO in STR." (while (string-match from str) (set 'str (replace-match to t t str))) str) -(defun pt-get-replacement (key) +(defun kaarvok-get-replacement (key) "Find, or ask for and save, the replacement value for KEY." - (let ((replacement (assoc key pt-value-alist))) + (let ((replacement (assoc key kaarvok-value-alist))) (when (eq replacement nil) (set 'replacement `(,key . ,(read-from-minibuffer (concat key ": ")))) - (add-to-list 'pt-value-alist replacement)) + (add-to-list 'kaarvok-value-alist replacement)) replacement)) -(defun pt-parse-file-name (filename) - "Parse FILENAME and replace all __variables__ with values -provided by the user." - (while (string-match (pt-template-var-regexp) filename) +(defun kaarvok-parse-file-name (filename) + "Parse FILENAME and replace all variables. + +Use values provided by the user." + (while (string-match (kaarvok-template-var-regexp) filename) (let* ((tpl-var (match-string 1 filename)) - (replacement-value (pt-get-replacement tpl-var))) + (replacement-value (kaarvok-get-replacement tpl-var))) (set 'filename (replace-match (cdr replacement-value) t t filename)))) (let ((noext (file-name-sans-extension filename)) (ext (file-name-extension filename t))) - (set 'noext (pt-replace-all "\\." "/" noext)) + (set 'noext (kaarvok-replace-all "\\." "/" noext)) (concat noext ext))) -(defun pt-parse-file (file) - "Parse FILE and replace all __variables__ with values provided by -the user." +(defun kaarvok-parse-file (file) + "Parse FILE and replace all variables." (insert-file-contents file) - (while (re-search-forward (pt-template-var-regexp) nil t) + (while (re-search-forward (kaarvok-template-var-regexp) nil t) (let* ((tpl-var (match-string 1)) - (replacement-value (pt-get-replacement tpl-var))) + (replacement-value (kaarvok-get-replacement tpl-var))) (replace-match (cdr replacement-value) t t)))) -(defun pt-parse-and-copy-file (src dst) - "Copy SRC to DST, but, if necessary, parse the file and filename -first." - (let* ((parsed-dst (pt-parse-file-name dst)) +(defun kaarvok-parse-and-copy-file (src dst) + "Copy SRC to DST. + +If necessary, parse the file and filename first." + (let* ((parsed-dst (kaarvok-parse-file-name dst)) (parsed-dst-dir (file-name-directory parsed-dst))) (when (not (file-exists-p parsed-dst-dir)) (make-directory parsed-dst-dir t)) (with-temp-file parsed-dst - (pt-parse-file src)))) + (kaarvok-parse-file src)))) -(defun pt-copy-directory (directory to) - "Copy template directory DIRECTORY to the location indicated by -TO and parse both paths and files in the process." +(defun kaarvok-copy-directory (directory to) + "Copy template DIRECTORY to TO. + +Parse both paths and files in the process." (let ((files (directory-files directory t "[^.]\\{1,2\\}$" t))) (while files (let* ((src-filename (car files)) (dst-filename (concat to "/" (file-name-nondirectory src-filename)))) (if (file-directory-p src-filename) - (pt-copy-directory src-filename dst-filename) + (kaarvok-copy-directory src-filename dst-filename) (if (string-equal (file-name-extension src-filename) "etpl") - (pt-parse-and-copy-file + (kaarvok-parse-and-copy-file src-filename (file-name-sans-extension dst-filename)) (if (not (file-exists-p to)) (make-directory to t) @@ -122,13 +124,14 @@ TO and parse both paths and files in the process." (set 'files (cdr files))))) ;;;###autoload -(defun pt-create-project-from-template (template destination) - "Take TEMPLATE, copy it to DESTINATION and replace any -occurrences of __variables__ with user-povided values." +(defun kaarvok-create-project-from-template (template destination) + "Take TEMPLATE, copy it to DESTINATION. + +Replace any occurrences of variables with user-povided values." (interactive "MTemplate: \nGDestination: ") - (let ((pt-value-alist)) - (pt-copy-directory - (concat pt-templates-directory "/" template) destination))) + (let ((kaarvok-value-alist)) + (kaarvok-copy-directory + (concat kaarvok-templates-directory "/" template) destination))) -(provide 'project-template) -;;; project-template.el ends here +(provide 'kaarvok) +;;; kaarvok.el ends here @@ -1,27 +0,0 @@ -#!/bin/sh -# pt -- A small shell wrapper around project-template -# Copyright (C) 2013 Tom Willemse <tom at ryuslash dot org> - -# This file is part of project-template. - -# project-template is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# project-template is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with project-template. -# If not, see <http://www.gnu.org/licenses/>. - -if [ "${#@}" -lt 2 ]; then - echo "Usage: $0 <template name> <destination>" - exit 1 -fi - -/usr/bin/emacs -Q -batch -l project-template.el -eval \ - "(pt-create-project-from-template \"$1\" \"$2\")" |