diff --git a/emacs.d/wpc/fs-functions.el b/emacs.d/wpc/fs-functions.el new file mode 100644 index 000000000..1ceacfaed --- /dev/null +++ b/emacs.d/wpc/fs-functions.el @@ -0,0 +1,28 @@ +;;; fs-functions.el --- Functions to make working with the filesystem easier. -*- lexical-binding: t -*- +;; Author: William Carroll + +;;; Commentary: +;; Hosts ergonomic functions for working with a filesystem. + +;;; Code: + +(require 'dash) +(require 'f) + +(defun ensure-file-path (path) + "Ensure that a file and its directories in PATH exist. +Will error for inputs with a trailing slash." + (when (s-ends-with? "/" path) + (error (format "Input path has trailing slash: %s" path))) + (let ((dirs (->> path f-dirname f-split))) + (apply #'f-mkdir dirs) + (f-touch path))) + +(defun ensure-dir-path (path) + "Ensures that a directory and its ancestor directories in PATH exist." + (->> path + f-split + (apply #'f-mkdir))) + +(provide 'fs-functions) +;;; fs-functions.el ends here