parent
1120f97305
commit
b7bad0f69b
1 changed files with 128 additions and 0 deletions
@ -0,0 +1,128 @@ |
||||
################################################################################ |
||||
# FILE: fastfile.plugin.zsh |
||||
# DESCRIPTION: oh-my-zsh plugin file. |
||||
# AUTHOR: Michael Varner (musikmichael@web.de) |
||||
# VERSION: 1.0.0 |
||||
# |
||||
# This plugin adds the ability to on the fly generate and access file shortcuts. |
||||
# |
||||
################################################################################ |
||||
|
||||
########################### |
||||
# Settings |
||||
|
||||
# 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/" |
||||
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: |
||||
# => fastfle_print |
||||
# |
||||
function fastfile() { |
||||
test "$2" || 2="." |
||||
2=$(readlink -f "$2") |
||||
test "$1" || 1="$(basename "$2")" |
||||
|
||||
mkdir -p "${fastfile_dir}" |
||||
echo "$2" > "$(fastfile_resolv "$1")" |
||||
|
||||
fastfile_sync |
||||
fastfile_print "$1" |
||||
} |
||||
|
||||
# |
||||
# 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 |
||||
# |
||||
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: |
||||
# (=> fastfle_print) for each shortcut |
||||
# |
||||
function fastfile_ls() { |
||||
for f in $(ls "${fastfile_dir}"); do |
||||
fastfile_print "$f" |
||||
done | column -t |
||||
} |
||||
|
||||
# |
||||
# Remove 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: |
||||
# => fastfle_print |
||||
# |
||||
function fastfile_rm() { |
||||
fastfile_print "$1" |
||||
rm "$(fastfile_resolv "$1")" |
||||
} |
||||
|
||||
# |
||||
# Generate the aliases for the shortcuts |
||||
# |
||||
function fastfile_sync() { |
||||
for f in $(ls "${fastfile_dir}"); do |
||||
alias -g "${fastfile_var_prefix}${f}"="$(fastfile_get "$f")" |
||||
done |
||||
} |
||||
|
||||
################################## |
||||
# Shortcuts |
||||
|
||||
alias ff=fastfile |
||||
alias ffp=fastfile_print |
||||
alias ffrm=fastfile_rm |
||||
alias ffls=fastfile_ls |
||||
alias ffsync=fastfile_sync |
||||
|
||||
################################## |
||||
# Init |
||||
|
||||
fastfile_sync |
||||
Loading…
Reference in new issue