lackadaisical/editx
2026-05-04 11:36:55 +02:00

66 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
# This utility pre-allocs a file and adds execution permissions. It also
# removes the resulting file if it is empty after the editor closes.
LD_INTERNAL=1
. $(dirname $(realpath $0))/daisy.source
if [[ -z $1 ]];
then
echo "No filename specified."
exit 2
fi
if [[ -z "${EDITOR}" ]];
then
# ched is defined in daisy.source
ched "EDITOR env variable not set! You will have to set it yourself in the next screen."
fi
file=$1
file_exist=0
file_in_path=$(whereis $1 | awk '{print $2}')
path_exist=0
[[ -e "$file" ]] && file_exist=1
[[ -n "$file_in_path" ]] && path_exist=1
if [[ $path_exist == 1 && $file_exist == 0 ]]; then
file=$file_in_path
elif [[ $path_exist == 1 && $file_exist == 1 ]]; then
# Check if they are actually the same file
if [[ $(realpath "$file") != $(realpath "$file_in_path") ]]; then
echo "Multiple instances of \"$1\" were located, please make a selection:"
echo "1. Local file: \"$file\""
echo "2. File found in PATH: \"$file_in_path\""
read -p "Please select a choice, the default choice (with no entry) is 2 [1..2]: " choice
case "$choice" in
1)
file=$file
;;
2|"")
file="$file_in_path"
;;
*)
file="$file_in_path"
;;
esac
fi
fi
# Determine if the file already exists before we touch it
if [[ -e "$file" ]]; then
existed=1
else
existed=0
fi
touch "$file"
chmod +x "$file"
daisy editor "$file"
# Only remove if it's empty AND we created it in this session
if [[ ! -s "$file" && $existed -eq 0 ]]; then
rm -f "$file"
fi