Files
dotfiles/doom.d/modules/gentemplate.org
AChavali 8d77f06ae5 +gentemplate module clones templates from github
gentemplate from sh but in Emacs!

Uses magit-clone to get the repositories, and can actually detect if
you're offline just to use a different version that copies it locally
from your machine.
2020-01-17 02:33:05 +00:00

1.9 KiB

Generate Template

Preclude

Generate templates from my set on Github or on computer currently.

List of templates

Make a list of possible templates for my system to use

(setq oreodave/templates/template-list (list "CTemplate" "CPPTemplate" "PythonTemplate" "NodeTemplate" "ArduinoTemplate"))

Download template for given template name and directory

For a given template name and destination, map the template name to a URL and clone to the destination using magit-clone-regular.

(after! magit-clone
  (defun oreodave/templates/download-template (template-name dest)
    (magit-clone-regular (concat "https://github.com/oreodave/" template-name) dest nil)))

Copy and move template for a template name and destination directory

(defun oreodave/templates/copy-template (template-name dest)
  (copy-file (expand-file-name (concat "~/Projects/Templates/" template-name)) dest))

Find if online or not

Function which checks that the network connections are = 1. If only one network connection, must be offline

(defun oreodave/templates/offline ()
  (eq (list-length (network-interface-list)) 1))

Generate-template

After getting a downloader function, write a new function that asks for the template and destination of clone for cloning to begin.

(after! (ivy magit-clone)
  (defun oreodave/templates/generate-template ()
    (interactive)
    (ivy-read "Enter template: "
              oreodave/templates/template-list
              :action
              (lambda (template-name)
                (let ((dir (read-directory-name "Enter directory to download to: "))
                      (offline (oreodave/templates/offline)))
                  (if offline
                      (oreodave/templates/copy-template template-name dir))
                  (oreodave/templates/download-template template-name dir))))))