about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/wpc/fs-functions.el')
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/fs-functions.el28
1 files changed, 28 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/wpc/fs-functions.el b/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
new file mode 100644
index 000000000000..1ceacfaed2c7
--- /dev/null
+++ b/configs/shared/emacs/.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 <wpcarro@gmail.com>
+
+;;; 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