From e8ca641075b0acfab44fd424f08ab6fa6f630495 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Wed, 18 Jul 2018 18:07:53 -0400 Subject: [PATCH] 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. --- emacs.d/wpc/fs-functions.el | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 emacs.d/wpc/fs-functions.el 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