From ade1459b0c9d2c3e9da0923c92cd74c1f195cead Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Mon, 28 Feb 2022 11:15:09 -0600 Subject: feat: new script for creating temp dirs --- scripts/td.sh | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100755 scripts/td.sh (limited to 'scripts/td.sh') diff --git a/scripts/td.sh b/scripts/td.sh new file mode 100755 index 0000000..44ca0ab --- /dev/null +++ b/scripts/td.sh @@ -0,0 +1,124 @@ +#!/bin/sh + +SCRIPT="$(basename $0)" + +help() { + cat <<-EOF +$SCRIPT +Toby Vincent + +$SCRIPT is a script for managing and navigating a persistent temp directory. In +order to function properly, this script must be sourced in the currently shell. +Consider setting an alias such as + + alias td=". $SCRIPT" + +USAGE: + $SCRIPT [OPTIONS] + $SCRIPT [OPTIONS] + +OPTIONS: + -h, --help Display this message + -f, --force Use the --force argument when removing TD + +ARGS: + toggle (default) + Switch between TD_ORIGIN and TD. This will create TD if it does not + exist. This is the default if no command is provided. + + new | create + Creates a new temp directory and cds into it it stores the path + to the temp directory in TD, and the path to the previous directory in + TD_ORIGIN. + + rm | remove + Removes the directory stored in TD unsets TD and TD_ORIGIN. + + ls | list | show + Shows the current values for TD and TD_ORIGIN +EOF +} + +echo_err() { + echo >&2 "$SCRIPT: $@" +} + +rm_args="-r" +while test $# -gt 0; do + case $1 in + --help | -h) + help + return 0 + ;; + --force | -f) + rm_args="-rf" + shift + ;; + *) break ;; + + esac +done + +show() { + if [ ! -n "$TD" ]; then + echo_err "Not set" + return 1 + fi + echo "TD=$TD" + echo "TD_ORIGIN=$TD_ORIGIN" +} + +remove() { + if [ ! -n "$TD" ]; then + echo_err "Not set" + return 1 + fi + + rm "$rm_args" "$TD" + + echo "removed $TD" + + if [ "$PWD" = "$TD" ]; then + cd "$TD_ORIGIN" + fi + + unset TD + unset TD_ORIGIN +} + +create() { + remove 2>/dev/null + + td=$(mktemp -d) + + export TD="$td" + export TD_ORIGIN="$PWD" + + echo "created $TD" + cd "$TD" +} + +toggle() { + if [ "$PWD" = "$TD" ]; then + cd "$TD_ORIGIN" + elif [ -n "$TD" ]; then + cd "$TD" + else + create + fi +} + +case $1 in +ls | list | show) + show + ;; +rm | remove) + remove + ;; +new | create) + create + ;; +* | toggle) + toggle + ;; +esac -- cgit v1.2.3-70-g09d2