mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
################################################################################
 | 
						|
#          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 |