61 lines
1.0 KiB
Bash
Executable File
61 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
IFS=$'\n\t'
|
|
oldIFS=$IFS
|
|
|
|
help() {
|
|
echo "Usage: ${0##*/} [-l lang][-h] FILENAME"
|
|
echo "Supported languages: python, crystal, bash (default)"
|
|
}
|
|
|
|
if [ $# -eq 0 ];then
|
|
help
|
|
exit 0
|
|
fi
|
|
|
|
read -d '' bashShebang << 'EOF' || true
|
|
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
IFS=$'\\n\\t'
|
|
EOF
|
|
|
|
read -d '' pythonShebang << EOF || true
|
|
#!/usr/bin/env python
|
|
EOF
|
|
|
|
read -d '' crystalShebang << EOF || true
|
|
#!/usr/bin/env crystal
|
|
EOF
|
|
|
|
shebang=$bashShebang
|
|
|
|
while getopts ":hl:" opt;do
|
|
if [ $opt == "h" ];then
|
|
help
|
|
exit 0
|
|
else
|
|
case $OPTARG in
|
|
py | python)shebang=$pythonShebang ;;
|
|
cr | crystal)shebang=$crystalShebang ;;
|
|
sh | bash | shell | *)shebang=$bashShebang ;;
|
|
esac
|
|
fi
|
|
done
|
|
shift $((OPTIND - 1))
|
|
|
|
SCRIPT_FOLDER=$HOME/.local/bin
|
|
SCRIPT_FILE=$SCRIPT_FOLDER/$1
|
|
|
|
if [[ -f $SCRIPT_FILE ]]; then
|
|
$EDITOR $SCRIPT_FILE
|
|
else
|
|
touch $SCRIPT_FILE
|
|
chmod +x $SCRIPT_FILE
|
|
echo "$shebang" >> $SCRIPT_FILE
|
|
$EDITOR $SCRIPT_FILE
|
|
fi
|
|
|
|
exit 0
|