83 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#! /bin/bash
 | 
						|
#
 | 
						|
# tmp.bash
 | 
						|
# Copyright (C) 2018 salt <salt@lap-th-e560-0>
 | 
						|
#
 | 
						|
# Distributed under terms of the MIT license.
 | 
						|
#
 | 
						|
 | 
						|
# Define variables
 | 
						|
name="$(basename "$0" .sh)"
 | 
						|
tmpdir="$(mktemp -d)"
 | 
						|
 | 
						|
# Verify them
 | 
						|
[ -z "$tmpdir" ] && exit 2
 | 
						|
 | 
						|
# Define functions
 | 
						|
log() {
 | 
						|
	[ -z "$1" ] && return 1
 | 
						|
	# shellcheck disable=1117
 | 
						|
	printf "%b: %s\n" \
 | 
						|
		"$name" \
 | 
						|
		"$1"
 | 
						|
}
 | 
						|
cleanup() {
 | 
						|
	[ -z "$tmpdir" ] && exit 2
 | 
						|
	log "Cleaning up \"$tmpdir\""
 | 
						|
	rm -rf "$tmpdir"
 | 
						|
}
 | 
						|
 | 
						|
# Handle args
 | 
						|
while getopts ":h" opt; do
 | 
						|
	case $opt in
 | 
						|
		h)
 | 
						|
			cat << EOF
 | 
						|
Usage: $name [TEMPLATE]
 | 
						|
Create a temporary directory, copying the folder [TEMPLATE] from
 | 
						|
[XDG_TEMPLATES_DIR|~/Templates]/tmp, if it exists.
 | 
						|
 | 
						|
  -h			Show this help text
 | 
						|
 | 
						|
https://gitlab.com/rehashedsalt/bin
 | 
						|
EOF
 | 
						|
			exit 0
 | 
						|
			;;
 | 
						|
		*)
 | 
						|
			log "Invaild argumenet: -$OPTARG"
 | 
						|
			log "See $name -h for help"
 | 
						|
			exit 1
 | 
						|
			;;
 | 
						|
	esac
 | 
						|
done
 | 
						|
 | 
						|
# Copy in template directory
 | 
						|
if [ -n "$1" ]; then
 | 
						|
	# Source in XDG dirs, if they exist
 | 
						|
	userdirs="${XDG_CONFIG_HOME:-~/.config}/user-dirs.dirs"
 | 
						|
	if [ -f "$userdirs" ]; then
 | 
						|
		source "$userdirs"
 | 
						|
	fi
 | 
						|
	unset userdirs
 | 
						|
	copydir="${XDG_TEMPLATES_DIR:-~/Templates}/tmp/$1"
 | 
						|
	if ! [ -d "$copydir" ]; then
 | 
						|
		log "Could not find template directory \"$copydir\""
 | 
						|
		exit 3
 | 
						|
	fi
 | 
						|
	if ! [ -r "$copydir" ]; then
 | 
						|
		log "Cannot read template directory \"$copydir\""
 | 
						|
		exit 4
 | 
						|
	fi
 | 
						|
	log "Using template \"$1\""
 | 
						|
	cp -r "$copydir"/* "$tmpdir"
 | 
						|
	unset copydir
 | 
						|
fi
 | 
						|
 | 
						|
trap "cleanup" EXIT
 | 
						|
# Do the do
 | 
						|
log "This directory will be removed when this shell exits"
 | 
						|
(
 | 
						|
cd "$tmpdir" || exit 50
 | 
						|
exec "$SHELL"
 | 
						|
)
 | 
						|
 |