aboutsummaryrefslogtreecommitdiff
path: root/doom.d/modules/gentemplate.org
blob: dfaacc909a9536c4f49b24045ca28112b4bb69a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#+TITLE: 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
#+BEGIN_SRC elisp
(setq oreodave/templates/template-list (list "CTemplate" "CPPTemplate" "PythonTemplate" "NodeTemplate" "ArduinoTemplate" "JavaTemplate"))
#+END_SRC
* Find if online or not
Function which checks that the network connections are = 1. If only one network
connection is present, the system must be offline
#+BEGIN_SRC elisp
(defun oreodave/templates/offline ()
  (eq (list-length (network-interface-list)) 1))
#+END_SRC
* Download template
For a given template name and destination, map the template name to a URL and
clone to the destination using magit-clone-regular.
#+BEGIN_SRC elisp
(after! magit-clone
  (defun oreodave/templates/download-template (template-name dest)
    "Download a given template via its `template-name' to the `dest' folder"
    (magit-clone-regular (concat "https://github.com/oreodave/" template-name) dest nil)))

#+END_SRC
* Copy template
For a given template name, copy the template from the local template directory
to a destination.
#+BEGIN_SRC elisp
(defun oreodave/templates/copy-template (template-name dest)
  "Copy a template project via it's `template-name' to a folder called `dest'"
  (copy-directory (expand-file-name (concat "~/Code/Templates/" template-name)) dest))
#+END_SRC
* Generate-template
After getting a download function, write a new function that asks for the
template and destination of clone for cloning to begin.
#+BEGIN_SRC elisp
(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)))))))
#+END_SRC