#!/usr/bin/bash # Copy a file from ~/Templates to a given name # # Dependencies: # - fd (soft) # - fzf printHelp() { cat << EOF Usage: cptemplate [-h,--help] [options] [filename] Options: -h, --help print this help page EOF } while true; do case "${1}" in '-h'|'--help') printHelp exit ;; --) shift break ;; -*) printf '%s\n' "Unknown option: ${1}" exit 1 ;; *) break ;; esac done # check for existence of fd and fzf binaries if [[ ! -x '/usr/bin/fzf' ]]; then printf '%s\n' 'fzf is not installed on the system' exit 1 fi declare -a find_opts template_dir="${HOME}/Templates" if [[ -x '/usr/bin/fd' ]]; then find_bin='/usr/bin/fd' find_opts+=('--print0') find_opts+=('--type' 'f') find_opts+=('.' "${template_dir}") else find_bin='/usr/bin/find' find_opts+=("${template_dir}") find_opts+=('-mindepth' '0') find_opts+=('-type' 'f') find_opts+=('-print0') fi template_file="$("${find_bin}" "${find_opts[@]}" | fzf --read0 --select-1 --exit-0 --no-mouse)" [[ -z "${template_file}" ]] && exit 1 cp --interactive --verbose "${template_file}" "${1:-.}"