~gentemplate.org -> gentemplate module

Gentemplate is one of those things that just makes sense as a module.
Thus, converted it. I may convert a few more org files into full blown modules.
This commit is contained in:
odave
2020-03-17 17:03:10 +00:00
parent 110cf1b5f3
commit 9ced0a3677
3 changed files with 53 additions and 53 deletions

View File

@@ -1,53 +0,0 @@
#+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

View File

@@ -0,0 +1,21 @@
#+TITLE: private/gentemplate
#+DATE: March 17, 2020
#+SINCE: {replace with next tagged release version}
#+STARTUP: inlineimages nofold
* Description
This module allows users to clone templates from my Github to specific machines.
These templates allow for quick and easy setup for languages or frameworks where
this sort of thing isn't very nice to do (for example C++).
This module is used through the main function =+gentemplate/generate-template=.
It will ask what template you want to use then where to put it, finally doing
the necessary work to get you that template. You may mutate the variables
=+gentemplate/template-list= and =+gentemplate/profile-url= to customise your
templates.
* Prerequisites
- git
* Requirements
- ivy
- magit
- cl

View File

@@ -0,0 +1,32 @@
;;; 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))
(after! 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/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/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)))))))