Support ensure_{file,dir} in zsh

Support functions for ensuring the existence of directories and files. These
functions represent the type of small ergonomic wins that I believe libraries
should support.
This commit is contained in:
William Carroll 2019-12-22 21:32:25 +00:00
parent 82717e3f22
commit 90955a3c02

View file

@ -85,6 +85,19 @@ compliments() {
# Filesystem operations # Filesystem operations
################################################################################ ################################################################################
ensure_dir() {
# Ensures that the directory and its children exist.
# Usage: ensure_dir <path-to-dir>
mkdir -p $1
}
ensure_file() {
# Ensures that the file and the path to that file exist.
# Usage: ensure_dir <path-to-file>
# depends ensure_dir
ensure_dir $(dirname $1) && touch $1
}
tar_dir() { tar_dir() {
# Tars dir as dir.tar. Removes dir. # Tars dir as dir.tar. Removes dir.
# compliments untar_dir # compliments untar_dir
@ -204,11 +217,12 @@ wallpaper() {
dotfilify() { dotfilify() {
# Moves a regular, non-symlinked file into my dotfiles. # Moves a regular, non-symlinked file into my dotfiles.
# compliments undotfilify # compliments undotfilify
# depends ensure_dir
local original_path=$(realpath $1) local original_path=$(realpath $1)
# Trim $HOME prefix local dotfile_path="${DOTFILES}/configs/shared/${original_path#$HOME/}"
local dotfile_path="${DOTFILES#$HOME/}/configs/shared/${original_path#$HOME/}" ensure_dir $(dirname $dotfile_path) && \
mv $original_path $dotfile_path && \
mv $original_path $dotfile_path && ln --force -s $dotfile_path $original_path ln --force -s $dotfile_path $original_path
} }
# TODO: Write more robust, tested dotfile manager application in Elisp. # TODO: Write more robust, tested dotfile manager application in Elisp.