mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-30 02:44:42 +01:00
'default' is not a standard command in zsh making this By using parameter expansion instead we're able to assign default values to unset variables while remaining compatible with vanilla zsh
128 lines
2.6 KiB
Bash
128 lines
2.6 KiB
Bash
###########################
|
|
# Settings
|
|
|
|
# These can be overwritten any time.
|
|
# If they are not set yet, they will be
|
|
# overwritten with their default values
|
|
|
|
fastfile_dir="${fastfile_dir:-${HOME}/.fastfile}"
|
|
fastfile_var_prefix="${fastfile_var_prefix:-§}"
|
|
|
|
###########################
|
|
# Impl
|
|
|
|
#
|
|
# Generate a shortcut
|
|
#
|
|
# Arguments:
|
|
# 1. name - The name of the shortcut (default: name of the file)
|
|
# 2. file - The file or directory to make the shortcut for
|
|
# STDOUT:
|
|
# => fastfile_print
|
|
#
|
|
function fastfile() {
|
|
test "$2" || 2="."
|
|
file=$(readlink -f "$2")
|
|
|
|
test "$1" || 1="$(basename "$file")"
|
|
name=$(echo "$1" | tr " " "_")
|
|
|
|
|
|
mkdir -p "${fastfile_dir}"
|
|
echo "$file" > "$(fastfile_resolv "$name")"
|
|
|
|
fastfile_sync
|
|
fastfile_print "$name"
|
|
}
|
|
|
|
#
|
|
# Resolve the location of a shortcut file (the database file, where the value is written!)
|
|
#
|
|
# Arguments:
|
|
# 1. name - The name of the shortcut
|
|
# STDOUT:
|
|
# The path to the shortcut file
|
|
#
|
|
function fastfile_resolv() {
|
|
echo "${fastfile_dir}/${1}"
|
|
}
|
|
|
|
#
|
|
# Get the real path of a shortcut
|
|
#
|
|
# Arguments:
|
|
# 1. name - The name of the shortcut
|
|
# STDOUT:
|
|
# The path
|
|
#
|
|
function fastfile_get() {
|
|
cat "$(fastfile_resolv "$1")"
|
|
}
|
|
|
|
#
|
|
# Print a shortcut
|
|
#
|
|
# Arguments:
|
|
# 1. name - The name of the shortcut
|
|
# STDOUT:
|
|
# Name and value of the shortcut
|
|
#
|
|
function fastfile_print() {
|
|
echo "${fastfile_var_prefix}${1} -> $(fastfile_get "$1")"
|
|
}
|
|
|
|
#
|
|
# List all shortcuts
|
|
#
|
|
# STDOUT:
|
|
# (=> fastfile_print) for each shortcut
|
|
#
|
|
function fastfile_ls() {
|
|
for f in "${fastfile_dir}"/*(N); do
|
|
file=$(basename "$f") # To enable simpler handling of spaces in file names
|
|
varkey=$(echo "$file" | tr " " "_")
|
|
|
|
# Special format for columns
|
|
echo "${fastfile_var_prefix}${varkey}|->|$(fastfile_get "$file")"
|
|
done | column -t -s "|"
|
|
}
|
|
|
|
#
|
|
# Remove a shortcut
|
|
#
|
|
# Arguments:
|
|
# 1. name - The name of the shortcut (default: name of the file)
|
|
# STDOUT:
|
|
# => fastfile_print
|
|
#
|
|
function fastfile_rm() {
|
|
fastfile_print "$1"
|
|
rm "$(fastfile_resolv "$1")"
|
|
unalias "${fastfile_var_prefix}${1}"
|
|
}
|
|
|
|
#
|
|
# Generate the aliases for the shortcuts
|
|
#
|
|
function fastfile_sync() {
|
|
for f in "${fastfile_dir}"/*(N); do
|
|
file=$(basename "$f") # To enable simpler handling of spaces in file names
|
|
varkey=$(echo "$file" | tr " " "_")
|
|
|
|
alias -g "${fastfile_var_prefix}${varkey}"="'$(fastfile_get "$file")'"
|
|
done
|
|
}
|
|
|
|
##################################
|
|
# Shortcuts
|
|
|
|
alias ff=fastfile
|
|
alias ffp=fastfile_print
|
|
alias ffrm=fastfile_rm
|
|
alias ffls=fastfile_ls
|
|
alias ffsync=fastfile_sync
|
|
|
|
##################################
|
|
# Init
|
|
|
|
fastfile_sync
|