123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- ################################################################################
- # 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="."
- 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
- #
- 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 "${fastfile_dir}"/*; do
- file=`basename "$f"` # To enable simpler handeling of spaces in file names
- varkey=`echo "$file" | tr " " "_"`
- # Special format for colums
- 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)
- # 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 "${fastfile_dir}"/*; do
- file=`basename "$f"` # To enable simpler handeling 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
|