#!/bin/sh # Quit if a valid configuration source doesn't exist [ -f "$XDG_CONFIG_HOME/shortcutrc" ] && src="$XDG_CONFIG_HOME/shortcutrc" || exit 1 # If you do not want to create a specific file, replace it's variable with /dev/null awk -v lf_filepath="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcuts" \ -v zsh_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts" \ -v env_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/env-shortcuts" \ ' BEGIN { FS="," OFS="," } # Function to remove whitespaces from a string function remove_whitespace(str) { gsub(/[[:space:]]/, "", str) return str } { # Remove comments gsub(/#.*/, "") # Remove whitespaces from column 2 $2 = remove_whitespace($2) # Remove leading and trailing whitespaces from column 3 gsub(/^[[:space:]]+|[[:space:]]+$/, "", $3) # whenever a line contains only commas, replace it with an empty string # so that we can check if a line is empty or not gsub(/^,+$|^,+|,+$|,+,/, "", $0) # Check if line is empty or contains only whitespace if (NF) { # Convert column 2 to lowercase lc_col2 = tolower($2) # Convert column 2 to uppercase uc_col2 = toupper($2) # Write to $XDG_CONFIG_HOME/lf/shortcuts print "map g" lc_col2 " cd " $3 > lf_filepath # Write to $XDG_CACHE_HOME/zsh-shortcuts print "g" lc_col2 "() {cd " $3 "}" > zsh_filepath # Write to $XDG_CACHE_HOME/env-shortcuts print "export G" uc_col2 "=" $3 "" > env_filepath } } ' "$src"