summaryrefslogtreecommitdiff
path: root/oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh
diff options
context:
space:
mode:
authorAditya <bluenerd@protonmail.com>2023-02-27 20:04:56 +0530
committerAditya <bluenerd@protonmail.com>2023-02-27 20:04:56 +0530
commitedc449275b6c04445f58b108ca0937a87c1e8430 (patch)
tree9fd484d58145b616f29a78857cc0b1c8b1c18f05 /oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh
parent6f5424ca96c4221ef433f545642669e9c104d0ed (diff)
add zsh
Diffstat (limited to 'oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh')
-rw-r--r--oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh128
1 files changed, 128 insertions, 0 deletions
diff --git a/oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh b/oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh
new file mode 100644
index 0000000..896fed5
--- /dev/null
+++ b/oh-my-zsh/plugins/fastfile/fastfile.plugin.zsh
@@ -0,0 +1,128 @@
+###########################
+# 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:
+# => 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