From 2aa725823ec0a8d38ec832f33125b3333f9ab7e3 Mon Sep 17 00:00:00 2001 From: Pablo Navais Date: Fri, 14 Mar 2025 23:13:26 +0100 Subject: [PATCH 1/3] Adding optional alias to plugin definition to use it in git clone as output directory --- scripts/install_plugins.sh | 27 ++++++++++++++++----------- scripts/source_plugins.sh | 2 +- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/scripts/install_plugins.sh b/scripts/install_plugins.sh index e2450ac..9837de0 100755 --- a/scripts/install_plugins.sh +++ b/scripts/install_plugins.sh @@ -15,13 +15,14 @@ fi clone() { local plugin="$1" local branch="$2" - if [ -n "$branch" ]; then - cd "$(tpm_path)" && - GIT_TERMINAL_PROMPT=0 git clone -b "$branch" --single-branch --recursive "$plugin" >/dev/null 2>&1 - else - cd "$(tpm_path)" && - GIT_TERMINAL_PROMPT=0 git clone --single-branch --recursive "$plugin" >/dev/null 2>&1 - fi + local alias="$3" + cd "$(tpm_path)" && { + local git_cmd=(git clone --single-branch --recursive) + [ -n "$branch" ] && git_cmd+=(-b "$branch") + git_cmd+=("$plugin" ${alias:+"$alias"}) + + GIT_TERMINAL_PROMPT=0 "${git_cmd[@]}" >/dev/null 2>&1 + } } # tries cloning: @@ -30,21 +31,25 @@ clone() { clone_plugin() { local plugin="$1" local branch="$2" - clone "$plugin" "$branch" || - clone "https://git::@github.com/$plugin" "$branch" + local alias="$3" + clone "$plugin" "$branch" "$alias" || + clone "https://git::@github.com/$plugin" "$branch" "$alias" } # clone plugin and produce output install_plugin() { - local plugin="$1" + local plugin="${1%%;*}" + local alias=$(echo $1 | sed -E 's/.*alias[[:space:]]*[:=][[:space:]]*//') local branch="$2" local plugin_name="$(plugin_name_helper "$plugin")" + [[ "$alias" == "$1" ]] && alias="" + if plugin_already_installed "$plugin"; then echo_ok "Already installed \"$plugin_name\"" else echo_ok "Installing \"$plugin_name\"" - clone_plugin "$plugin" "$branch" && + clone_plugin "$plugin" "$branch" "$alias" && echo_ok " \"$plugin_name\" download success" || echo_err " \"$plugin_name\" download fail" fi diff --git a/scripts/source_plugins.sh b/scripts/source_plugins.sh index 6381d54..d74a33f 100755 --- a/scripts/source_plugins.sh +++ b/scripts/source_plugins.sh @@ -31,7 +31,7 @@ source_plugins() { local plugins="$(tpm_plugins_list_helper)" for plugin in $plugins; do IFS='#' read -ra plugin <<< "$plugin" - plugin_path="$(plugin_path_helper "${plugin[0]}")" + plugin_path="$(plugin_path_helper "${plugin[0]%%;*}")" silently_source_all_tmux_files "$plugin_path" done } From 6c6b8569d020fd5ed1946e76160e928ba949a2e9 Mon Sep 17 00:00:00 2001 From: Pablo Navais Date: Fri, 14 Mar 2025 23:47:22 +0100 Subject: [PATCH 2/3] Add support to alias when branch is specified --- scripts/install_plugins.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/install_plugins.sh b/scripts/install_plugins.sh index 9837de0..ec2af4e 100755 --- a/scripts/install_plugins.sh +++ b/scripts/install_plugins.sh @@ -39,11 +39,11 @@ clone_plugin() { # clone plugin and produce output install_plugin() { local plugin="${1%%;*}" - local alias=$(echo $1 | sed -E 's/.*alias[[:space:]]*[:=][[:space:]]*//') - local branch="$2" + local alias=$(echo $1$2 | sed -E 's/.*alias[[:space:]]*[:=][[:space:]]*//') + local branch="${2%%;*}" local plugin_name="$(plugin_name_helper "$plugin")" - [[ "$alias" == "$1" ]] && alias="" + [[ "$alias" == "$1$2" ]] && alias="" if plugin_already_installed "$plugin"; then echo_ok "Already installed \"$plugin_name\"" From dd8c52a8be36c91854ac5583df115d0dc0fb16d7 Mon Sep 17 00:00:00 2001 From: Pablo Navais Date: Sat, 15 Mar 2025 11:40:03 +0100 Subject: [PATCH 3/3] Fixed initial sourcing when using alias --- scripts/helpers/plugin_functions.sh | 8 ++++++-- scripts/source_plugins.sh | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/helpers/plugin_functions.sh b/scripts/helpers/plugin_functions.sh index f33d215..4894a59 100644 --- a/scripts/helpers/plugin_functions.sh +++ b/scripts/helpers/plugin_functions.sh @@ -81,9 +81,13 @@ tpm_plugins_list_helper() { # 1. "git://github.com/user/plugin_name.git" # 2. "user/plugin_name" plugin_name_helper() { - local plugin="$1" + local plugin="${1%%;*}" + local alias=$(echo $1 | sed -E 's/.*alias[[:space:]]*[:=][[:space:]]*//') + + [[ "$alias" == "$1" ]] && alias="" + # get only the part after the last slash, e.g. "plugin_name.git" - local plugin_basename="$(basename "$plugin")" + local plugin_basename=$([[ -n "$alias" ]] && echo "$alias" || basename "$plugin") # remove ".git" extension (if it exists) to get only "plugin_name" local plugin_name="${plugin_basename%.git}" echo "$plugin_name" diff --git a/scripts/source_plugins.sh b/scripts/source_plugins.sh index d74a33f..6381d54 100755 --- a/scripts/source_plugins.sh +++ b/scripts/source_plugins.sh @@ -31,7 +31,7 @@ source_plugins() { local plugins="$(tpm_plugins_list_helper)" for plugin in $plugins; do IFS='#' read -ra plugin <<< "$plugin" - plugin_path="$(plugin_path_helper "${plugin[0]%%;*}")" + plugin_path="$(plugin_path_helper "${plugin[0]}")" silently_source_all_tmux_files "$plugin_path" done }