about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2018-07-18T22·07-0400
committerWilliam Carroll <wpcarro@gmail.com>2018-07-19T16·00-0400
commite8ca641075b0acfab44fd424f08ab6fa6f630495 (patch)
treef795f5e6eae0e4d29cb559768925089a68a3851c
parent88d75b97710bb2719008a279e08dd5cf89d0a9f5 (diff)
Support convenience Elisp file system functions
Read the module docs for more information. May be an ongoing project, or
this may be the end of the library. Time shall tell.
-rw-r--r--emacs.d/wpc/fs-functions.el28
1 files changed, 28 insertions, 0 deletions
diff --git a/emacs.d/wpc/fs-functions.el b/emacs.d/wpc/fs-functions.el
new file mode 100644
index 000000000000..1ceacfaed2c7
--- /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 <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