anchor.diff:    (let ((info (read-template template-name)))
       (uiop:delete-file-if-exists
        (merge-pathnames (enc-string file-name) (template-dir template-name)))
  -    (when (find file-name (getf info :files) :key (lambda (x) (getf x :name)))
  +    (when (find file-name (getf info :files) :key (lambda (x) (getf x :name)) :test 'equal)
         (setf (getf info :files)
               (remove file-name (getf info :files)
  -                    :key (lambda (x) (getf x :name))))
  +                    :key (lambda (x) (getf x :name)) :test 'equal))
         (write-template template-name :list info))))
   
   (defun template-rm (_)
  
positive.code: 
  (defun copy-file (src dest params)
    (declare (ignore params))
    (uiop:copy-file src dest))
  
  (defvar *template-function-plist*
    '(nil copy-file))
  
  (defun template-apply (template-name args info)
    (declare (ignorable template-name args info))
    ;; tbd rename/chmod/template/after-hook
    (dolist (i (getf info :files))
      (funcall (getf *template-function-plist* (getf i :method))
               (merge-pathnames (format nil "~A/~A" template-name (enc-string (getf i :name))) (template-path template-name))
               (print (ensure-directories-exist (merge-pathnames (getf i :name) *default-pathname-defaults*)))
               args)))
  
  (defun write-template (name &key
                                (path (template-path name))
  
negative.code: (roswell:include "util" "util-template")
  (ql:quickload '(:uiop :djula) :silent t)
  (defpackage :roswell.util.template
    (:use :cl :roswell.util)
    (:export
  