1
0
Fork 0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-12-24 21:31:58 +00:00
ohmyzsh/plugins/fastfile/fastfile.plugin.zsh

129 lines
2.6 KiB
Bash
Raw Normal View History

2012-05-05 22:05:22 +00:00
###########################
2019-12-22 22:03:54 +00:00
# Settings
2012-05-05 22:05:22 +00:00
# These can be overwritten any time.
# If they are not set yet, they will be
# overwritten with their default values
default fastfile_dir "${HOME}/.fastfile"
2012-05-05 22:05:22 +00:00
default 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
2012-05-05 22:05:22 +00:00
#
function fastfile() {
test "$2" || 2="."
file=$(readlink -f "$2")
2019-12-22 22:03:54 +00:00
test "$1" || 1="$(basename "$file")"
name=$(echo "$1" | tr " " "_")
2012-05-05 22:05:22 +00:00
mkdir -p "${fastfile_dir}"
echo "$file" > "$(fastfile_resolv "$name")"
2012-05-05 22:05:22 +00:00
fastfile_sync
fastfile_print "$name"
2012-05-05 22:05:22 +00:00
}
#
# Resolve the location of a shortcut file (the database file, where the value is written!)
#
# Arguments:
# 1. name - The name of the shortcut
# STDOUT:
2019-12-22 22:03:54 +00:00
# The path to the shortcut file
2012-05-05 22:05:22 +00:00
#
function fastfile_resolv() {
echo "${fastfile_dir}/${1}"
2012-05-05 22:05:22 +00:00
}
#
# 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
2012-05-05 22:05:22 +00:00
#
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
2019-12-22 22:03:54 +00:00
echo "${fastfile_var_prefix}${varkey}|->|$(fastfile_get "$file")"
done | column -t -s "|"
2012-05-05 22:05:22 +00:00
}
#
# Remove a shortcut
#
# Arguments:
# 1. name - The name of the shortcut (default: name of the file)
# STDOUT:
# => fastfile_print
2012-05-05 22:05:22 +00:00
#
function fastfile_rm() {
fastfile_print "$1"
rm "$(fastfile_resolv "$1")"
unalias "${fastfile_var_prefix}${1}"
2012-05-05 22:05:22 +00:00
}
#
# 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 " " "_")
2019-12-22 22:03:54 +00:00
alias -g "${fastfile_var_prefix}${varkey}"="'$(fastfile_get "$file")'"
2012-05-05 22:05:22 +00:00
done
}
##################################
# Shortcuts
alias ff=fastfile
alias ffp=fastfile_print
alias ffrm=fastfile_rm
alias ffls=fastfile_ls
alias ffsync=fastfile_sync
##################################
2019-12-22 22:03:54 +00:00
# Init
2012-05-05 22:05:22 +00:00
2019-12-22 22:03:54 +00:00
fastfile_sync