mirror of
				https://github.com/tmux-plugins/tpm.git
				synced 2025-11-04 08:36:05 +00:00 
			
		
		
		
	Merge pull request #31 from chilicuil/remove-feature
add removal procedure
This commit is contained in:
		@@ -3,6 +3,7 @@
 | 
				
			|||||||
### master
 | 
					### master
 | 
				
			||||||
- enable overriding default key bindings
 | 
					- enable overriding default key bindings
 | 
				
			||||||
- start using `C-c` to clear screen
 | 
					- start using `C-c` to clear screen
 | 
				
			||||||
 | 
					- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### v1.2.2, 2015-02-08
 | 
					### v1.2.2, 2015-02-08
 | 
				
			||||||
- set GIT_TERMINAL_PROMPT=0 when doing `git clone`, `pull` or `submodule update`
 | 
					- set GIT_TERMINAL_PROMPT=0 when doing `git clone`, `pull` or `submodule update`
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,8 +47,7 @@ You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced.
 | 
				
			|||||||
### Uninstalling plugins
 | 
					### Uninstalling plugins
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. remove plugin from `@tpm_plugins` list
 | 
					1. remove plugin from `@tpm_plugins` list
 | 
				
			||||||
2. All the plugins are installed to `~/.tmux/plugins/`. Find plugin
 | 
					2. hit `prefix + alt + u` (I as in *u*install) to remove the plugin
 | 
				
			||||||
  directory there and just remove it.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Key bindings
 | 
					### Key bindings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,6 +58,9 @@ You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced.
 | 
				
			|||||||
`prefix + U`
 | 
					`prefix + U`
 | 
				
			||||||
- updates plugin(s)
 | 
					- updates plugin(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`prefix + alt + u`
 | 
				
			||||||
 | 
					- uninstall unused plugin(s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### List of plugins
 | 
					### List of plugins
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For more plugins, check [here](https://github.com/tmux-plugins).
 | 
					For more plugins, check [here](https://github.com/tmux-plugins).
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										44
									
								
								scripts/clean_plugins.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								scripts/clean_plugins.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source "$CURRENT_DIR/shared_functions.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean_plugins() {
 | 
				
			||||||
 | 
						local plugins plugin plugin_directory
 | 
				
			||||||
 | 
						plugins="$(shared_get_tpm_plugins_list)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for plugin_directory in "$SHARED_TPM_PATH"/*; do
 | 
				
			||||||
 | 
							[ -d "${plugin_directory}" ] || continue
 | 
				
			||||||
 | 
							plugin="$(shared_plugin_name "${plugin_directory}")"
 | 
				
			||||||
 | 
							case "${plugins}" in
 | 
				
			||||||
 | 
								*"${plugin}"*) : ;;
 | 
				
			||||||
 | 
								*)
 | 
				
			||||||
 | 
								[ "${plugin}" = "tpm" ] && continue
 | 
				
			||||||
 | 
								echo_message "Removing \"$plugin\""
 | 
				
			||||||
 | 
								rm -rf "${plugin_directory}"
 | 
				
			||||||
 | 
								[ -d "${plugin_directory}" ] &&
 | 
				
			||||||
 | 
								echo_message "  \"$plugin\" clean fail" ||
 | 
				
			||||||
 | 
								echo_message "  \"$plugin\" clean success"
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							esac
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ensure_tpm_path_exists() {
 | 
				
			||||||
 | 
						mkdir -p "$SHARED_TPM_PATH"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					reload_tmux_environment() {
 | 
				
			||||||
 | 
						tmux source-file ~/.tmux.conf >/dev/null 2>&1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main() {
 | 
				
			||||||
 | 
						reload_tmux_environment
 | 
				
			||||||
 | 
						shared_set_tpm_path_constant
 | 
				
			||||||
 | 
						ensure_tpm_path_exists
 | 
				
			||||||
 | 
						clean_plugins
 | 
				
			||||||
 | 
						reload_tmux_environment
 | 
				
			||||||
 | 
						end_message
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					main
 | 
				
			||||||
@@ -3,3 +3,6 @@ default_install_key="I"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
update_key_option="@tpm-update"
 | 
					update_key_option="@tpm-update"
 | 
				
			||||||
default_update_key="U"
 | 
					default_update_key="U"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clean_key_option="@tpm-clean"
 | 
				
			||||||
 | 
					default_clean_key="M-u"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										30
									
								
								tests/expect_successful_clean_plugins
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								tests/expect_successful_clean_plugins
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env expect
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# disables script output
 | 
				
			||||||
 | 
					log_user 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					spawn tmux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Waiting for tmux to attach. If this is not done, next command, `send` will
 | 
				
			||||||
 | 
					# not work properly.
 | 
				
			||||||
 | 
					sleep 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# this is tmux prefix + alt + u
 | 
				
			||||||
 | 
					send "u"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set timeout 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					expect {
 | 
				
			||||||
 | 
					  "Removing \"tmux-example-plugin\"" {
 | 
				
			||||||
 | 
					    expect {
 | 
				
			||||||
 | 
					      "\"tmux-example-plugin\" clean success" {
 | 
				
			||||||
 | 
					        expect { "Done, press ENTER to continue." { exit 0 } }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  timeout {
 | 
				
			||||||
 | 
					    puts "Plugin update prompt timeout";
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										32
									
								
								tests/test_plugin_clean.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								tests/test_plugin_clean.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source "$CURRENT_DIR"/helpers.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					manually_install_the_plugin() {
 | 
				
			||||||
 | 
						rm -rf   ~/.tmux/plugins/
 | 
				
			||||||
 | 
						mkdir -p ~/.tmux/plugins/
 | 
				
			||||||
 | 
						cd ~/.tmux/plugins/
 | 
				
			||||||
 | 
						git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test_plugin_installation() {
 | 
				
			||||||
 | 
						set_tmux_conf_helper <<- HERE
 | 
				
			||||||
 | 
						run-shell "$PWD/tpm"
 | 
				
			||||||
 | 
						HERE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						manually_install_the_plugin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						# opens tmux and test it with `expect`
 | 
				
			||||||
 | 
						"$CURRENT_DIR"/expect_successful_clean_plugins ||
 | 
				
			||||||
 | 
							fail_helper "Clean fails"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						teardown_helper
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main() {
 | 
				
			||||||
 | 
						test_plugin_installation
 | 
				
			||||||
 | 
						exit_value_helper
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					main
 | 
				
			||||||
							
								
								
									
										4
									
								
								tpm
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								tpm
									
									
									
									
									
								
							@@ -28,12 +28,16 @@ source_plugins() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# prefix + I - downloads TPM plugins and reloads TMUX environment
 | 
					# prefix + I - downloads TPM plugins and reloads TMUX environment
 | 
				
			||||||
# prefix + U - updates a plugin (or all of them) and reloads TMUX environment
 | 
					# prefix + U - updates a plugin (or all of them) and reloads TMUX environment
 | 
				
			||||||
 | 
					# prefix + Y - remove unused TPM plugins and reloads TMUX environment
 | 
				
			||||||
set_tpm_key_bindings() {
 | 
					set_tpm_key_bindings() {
 | 
				
			||||||
	local install_key=$(get_tmux_option "$install_key_option" "$default_install_key")
 | 
						local install_key=$(get_tmux_option "$install_key_option" "$default_install_key")
 | 
				
			||||||
	tmux bind-key "$install_key" run-shell "$CURRENT_DIR/scripts/install_plugins.sh >/dev/null 2>&1"
 | 
						tmux bind-key "$install_key" run-shell "$CURRENT_DIR/scripts/install_plugins.sh >/dev/null 2>&1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local update_key=$(get_tmux_option "$update_key_option" "$default_update_key")
 | 
						local update_key=$(get_tmux_option "$update_key_option" "$default_update_key")
 | 
				
			||||||
	tmux bind-key "$update_key" run-shell "$CURRENT_DIR/scripts/update_plugin_prompt.sh"
 | 
						tmux bind-key "$update_key" run-shell "$CURRENT_DIR/scripts/update_plugin_prompt.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						local clean_key=$(get_tmux_option "$clean_key_option" "$default_clean_key")
 | 
				
			||||||
 | 
						tmux bind-key "$clean_key" run-shell "$CURRENT_DIR/scripts/clean_plugins.sh"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
supported_tmux_version_ok() {
 | 
					supported_tmux_version_ok() {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user