aboutsummaryrefslogtreecommitdiff
path: root/Doom/.doom.d/modules/private/gentemplate/config.el
blob: 5f000841a5b5a9d90e62e7534c2a01aa043ae292 (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
;;; private/gentemplate/config.el -*- lexical-binding: t; -*-

(require 'cl)

(setq +gentemplate/template-list (list "CTemplate" "CPPTemplate" "PythonTemplate" "NodeTemplate" "ArduinoTemplate" "JavaTemplate"))
(setq +gentemplate/profile-url "https://github.com/oreodave/")

(defun +gentemplate/offline ()
  (eq (list-length (network-interface-list)) 1))

(defun +gentemplate/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))

(after! (ivy magit-clone)
  (defun +gentemplate/download-template (template-name dest)
    "Download a given template via its `template-name' to the `dest' folder"
    (magit-clone-regular (concat +gentemplate/profile-url template-name) dest nil))

  (defun +gentemplate/generate-template ()
    (interactive)
    (ivy-read
     "Enter template: "
     +gentemplate/template-list
     :action
     (lambda (template-name)
       (let ((dir (read-directory-name "Enter directory to download to: "))
             (offline (+gentemplate/offline)))
         (if offline
             (+gentemplate/copy-template template-name dir)
           (+gentemplate/download-template template-name dir)))))))