From 6e896e6d8ecc872de183243513af7345cce8b9d0 Mon Sep 17 00:00:00 2001 From: lew Date: Sat, 1 Nov 2025 23:54:16 +0000 Subject: [PATCH] Add .tmux/plugins/tpm/CHANGELOG.md Add .tmux/plugins/tpm/HOW_TO_PLUGIN.md Add .tmux/plugins/tpm/LICENSE.md Add .tmux/plugins/tpm/README.md Add .tmux/plugins/tpm/bin/clean_plugins Add .tmux/plugins/tpm/bin/install_plugins Add .tmux/plugins/tpm/bin/update_plugins Add .tmux/plugins/tpm/bindings/clean_plugins Add .tmux/plugins/tpm/bindings/install_plugins Add .tmux/plugins/tpm/bindings/update_plugins Add .tmux/plugins/tpm/docs/automatic_tpm_installation.md Add .tmux/plugins/tpm/docs/changing_plugins_install_dir.md Add .tmux/plugins/tpm/docs/how_to_create_plugin.md Add .tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md Add .tmux/plugins/tpm/docs/tpm_not_working.md Add .tmux/plugins/tpm/.git/HEAD Add .tmux/plugins/tpm/.git/config Add .tmux/plugins/tpm/.git/description Add .tmux/plugins/tpm/.git/hooks/applypatch-msg.sample Add .tmux/plugins/tpm/.git/hooks/commit-msg.sample Add .tmux/plugins/tpm/.git/hooks/fsmonitor-watchman.sample Add .tmux/plugins/tpm/.git/hooks/post-update.sample Add .tmux/plugins/tpm/.git/hooks/pre-applypatch.sample Add .tmux/plugins/tpm/.git/hooks/pre-commit.sample Add .tmux/plugins/tpm/.git/hooks/pre-merge-commit.sample Add .tmux/plugins/tpm/.git/hooks/pre-push.sample Add .tmux/plugins/tpm/.git/hooks/pre-rebase.sample Add .tmux/plugins/tpm/.git/hooks/pre-receive.sample Add .tmux/plugins/tpm/.git/hooks/prepare-commit-msg.sample Add .tmux/plugins/tpm/.git/hooks/push-to-checkout.sample Add .tmux/plugins/tpm/.git/hooks/sendemail-validate.sample Add .tmux/plugins/tpm/.git/hooks/update.sample Add .tmux/plugins/tpm/.git/index Add .tmux/plugins/tpm/.git/info/exclude Add .tmux/plugins/tpm/.git/logs/HEAD Add .tmux/plugins/tpm/.git/logs/refs/heads/master Add .tmux/plugins/tpm/.git/logs/refs/remotes/origin/HEAD Add .tmux/plugins/tpm/.git/objects/info/.keep Add .tmux/plugins/tpm/.git/objects/pack/pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.idx Add .tmux/plugins/tpm/.git/objects/pack/pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.pack Add .tmux/plugins/tpm/.git/objects/pack/pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.rev Add .tmux/plugins/tpm/.git/packed-refs Add .tmux/plugins/tpm/.git/refs/heads/master Add .tmux/plugins/tpm/.git/refs/remotes/origin/HEAD Add .tmux/plugins/tpm/.git/refs/tags/.keep Add .tmux/plugins/tpm/.gitattributes Add .tmux/plugins/tpm/.gitignore Add .tmux/plugins/tpm/.gitmodules Add .tmux/plugins/tpm/.travis.yml Add .tmux/plugins/tpm/tpm Add .tmux/plugins/tpm/lib/tmux-test/.keep Add .tmux/plugins/tpm/scripts/check_tmux_version.sh Add .tmux/plugins/tpm/scripts/clean_plugins.sh Add .tmux/plugins/tpm/scripts/install_plugins.sh Add .tmux/plugins/tpm/scripts/source_plugins.sh Add .tmux/plugins/tpm/scripts/update_plugin.sh Add .tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh Add .tmux/plugins/tpm/scripts/helpers/plugin_functions.sh Add .tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh Add .tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh Add .tmux/plugins/tpm/scripts/helpers/tmux_utils.sh Add .tmux/plugins/tpm/scripts/helpers/utility.sh Add .tmux/plugins/tpm/scripts/variables.sh Add .tmux/plugins/tpm/tests/expect_failed_plugin_download Add .tmux/plugins/tpm/tests/expect_successful_clean_plugins Add .tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download Add .tmux/plugins/tpm/tests/expect_successful_plugin_download Add .tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin Add .tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins Add .tmux/plugins/tpm/tests/test_plugin_clean.sh Add .tmux/plugins/tpm/tests/test_plugin_installation.sh Add .tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh Add .tmux/plugins/tpm/tests/test_plugin_sourcing.sh Add .tmux/plugins/tpm/tests/test_plugin_update.sh Add .tmux/plugins/tpm/tests/helpers/tpm.sh --- dot_tmux/plugins/tpm/CHANGELOG.md | 86 ++++++ dot_tmux/plugins/tpm/HOW_TO_PLUGIN.md | 2 + dot_tmux/plugins/tpm/LICENSE.md | 20 ++ dot_tmux/plugins/tpm/README.md | 101 +++++++ .../plugins/tpm/bin/executable_clean_plugins | 14 + .../tpm/bin/executable_install_plugins | 14 + .../plugins/tpm/bin/executable_update_plugins | 24 ++ .../tpm/bindings/executable_clean_plugins | 19 ++ .../tpm/bindings/executable_install_plugins | 19 ++ .../tpm/bindings/executable_update_plugins | 49 +++ .../tpm/docs/automatic_tpm_installation.md | 12 + .../tpm/docs/changing_plugins_install_dir.md | 16 + .../plugins/tpm/docs/how_to_create_plugin.md | 108 +++++++ .../tpm/docs/managing_plugins_via_cmd_line.md | 36 +++ dot_tmux/plugins/tpm/docs/tpm_not_working.md | 102 +++++++ dot_tmux/plugins/tpm/dot_git/HEAD | 1 + dot_tmux/plugins/tpm/dot_git/config | 11 + dot_tmux/plugins/tpm/dot_git/description | 1 + .../hooks/executable_applypatch-msg.sample | 15 + .../hooks/executable_commit-msg.sample | 24 ++ .../executable_fsmonitor-watchman.sample | 174 +++++++++++ .../hooks/executable_post-update.sample | 8 + .../hooks/executable_pre-applypatch.sample | 14 + .../hooks/executable_pre-commit.sample | 49 +++ .../hooks/executable_pre-merge-commit.sample | 13 + .../dot_git/hooks/executable_pre-push.sample | 53 ++++ .../hooks/executable_pre-rebase.sample | 169 +++++++++++ .../hooks/executable_pre-receive.sample | 24 ++ .../executable_prepare-commit-msg.sample | 42 +++ .../hooks/executable_push-to-checkout.sample | 78 +++++ .../executable_sendemail-validate.sample | 77 +++++ .../dot_git/hooks/executable_update.sample | 128 ++++++++ dot_tmux/plugins/tpm/dot_git/index | Bin 0 -> 4488 bytes dot_tmux/plugins/tpm/dot_git/info/exclude | 6 + dot_tmux/plugins/tpm/dot_git/logs/HEAD | 1 + .../tpm/dot_git/logs/refs/heads/master | 1 + .../tpm/dot_git/logs/refs/remotes/origin/HEAD | 1 + .../plugins/tpm/dot_git/objects/info/.keep | 0 ...8e91c4b0c2fd3de85deb1de59db344d5af0319.idx | Bin 0 -> 29436 bytes ...e91c4b0c2fd3de85deb1de59db344d5af0319.pack | Bin 0 -> 212010 bytes ...8e91c4b0c2fd3de85deb1de59db344d5af0319.rev | Bin 0 -> 4104 bytes dot_tmux/plugins/tpm/dot_git/packed-refs | 24 ++ .../plugins/tpm/dot_git/refs/heads/master | 1 + .../tpm/dot_git/refs/remotes/origin/HEAD | 1 + dot_tmux/plugins/tpm/dot_git/refs/tags/.keep | 0 dot_tmux/plugins/tpm/dot_gitattributes | 9 + dot_tmux/plugins/tpm/dot_gitignore | 4 + dot_tmux/plugins/tpm/dot_gitmodules | 3 + dot_tmux/plugins/tpm/dot_travis.yml | 19 ++ dot_tmux/plugins/tpm/executable_tpm | 81 +++++ dot_tmux/plugins/tpm/lib/tmux-test/.keep | 0 .../scripts/executable_check_tmux_version.sh | 78 +++++ .../tpm/scripts/executable_clean_plugins.sh | 41 +++ .../tpm/scripts/executable_install_plugins.sh | 75 +++++ .../tpm/scripts/executable_source_plugins.sh | 42 +++ .../tpm/scripts/executable_update_plugin.sh | 78 +++++ ...executable_update_plugin_prompt_handler.sh | 18 ++ .../tpm/scripts/helpers/plugin_functions.sh | 104 +++++++ .../scripts/helpers/shell_echo_functions.sh | 7 + .../scripts/helpers/tmux_echo_functions.sh | 28 ++ .../plugins/tpm/scripts/helpers/tmux_utils.sh | 6 + .../plugins/tpm/scripts/helpers/utility.sh | 17 ++ dot_tmux/plugins/tpm/scripts/variables.sh | 13 + .../executable_expect_failed_plugin_download | 36 +++ ...executable_expect_successful_clean_plugins | 35 +++ ...xpect_successful_multiple_plugins_download | 44 +++ ...ecutable_expect_successful_plugin_download | 50 +++ ...xpect_successful_update_of_a_single_plugin | 55 ++++ ...le_expect_successful_update_of_all_plugins | 59 ++++ .../tpm/tests/executable_test_plugin_clean.sh | 67 +++++ .../executable_test_plugin_installation.sh | 284 ++++++++++++++++++ ...cutable_test_plugin_installation_legacy.sh | 100 ++++++ .../tests/executable_test_plugin_sourcing.sh | 78 +++++ .../tests/executable_test_plugin_update.sh | 60 ++++ dot_tmux/plugins/tpm/tests/helpers/tpm.sh | 13 + 75 files changed, 3042 insertions(+) create mode 100644 dot_tmux/plugins/tpm/CHANGELOG.md create mode 100644 dot_tmux/plugins/tpm/HOW_TO_PLUGIN.md create mode 100644 dot_tmux/plugins/tpm/LICENSE.md create mode 100644 dot_tmux/plugins/tpm/README.md create mode 100644 dot_tmux/plugins/tpm/bin/executable_clean_plugins create mode 100644 dot_tmux/plugins/tpm/bin/executable_install_plugins create mode 100644 dot_tmux/plugins/tpm/bin/executable_update_plugins create mode 100644 dot_tmux/plugins/tpm/bindings/executable_clean_plugins create mode 100644 dot_tmux/plugins/tpm/bindings/executable_install_plugins create mode 100644 dot_tmux/plugins/tpm/bindings/executable_update_plugins create mode 100644 dot_tmux/plugins/tpm/docs/automatic_tpm_installation.md create mode 100644 dot_tmux/plugins/tpm/docs/changing_plugins_install_dir.md create mode 100644 dot_tmux/plugins/tpm/docs/how_to_create_plugin.md create mode 100644 dot_tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md create mode 100644 dot_tmux/plugins/tpm/docs/tpm_not_working.md create mode 100644 dot_tmux/plugins/tpm/dot_git/HEAD create mode 100644 dot_tmux/plugins/tpm/dot_git/config create mode 100644 dot_tmux/plugins/tpm/dot_git/description create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_applypatch-msg.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_commit-msg.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_fsmonitor-watchman.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_post-update.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-applypatch.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-commit.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-merge-commit.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-push.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-rebase.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-receive.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_prepare-commit-msg.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_push-to-checkout.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_sendemail-validate.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/hooks/executable_update.sample create mode 100644 dot_tmux/plugins/tpm/dot_git/index create mode 100644 dot_tmux/plugins/tpm/dot_git/info/exclude create mode 100644 dot_tmux/plugins/tpm/dot_git/logs/HEAD create mode 100644 dot_tmux/plugins/tpm/dot_git/logs/refs/heads/master create mode 100644 dot_tmux/plugins/tpm/dot_git/logs/refs/remotes/origin/HEAD create mode 100644 dot_tmux/plugins/tpm/dot_git/objects/info/.keep create mode 100644 dot_tmux/plugins/tpm/dot_git/objects/pack/readonly_pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.idx create mode 100644 dot_tmux/plugins/tpm/dot_git/objects/pack/readonly_pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.pack create mode 100644 dot_tmux/plugins/tpm/dot_git/objects/pack/readonly_pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.rev create mode 100644 dot_tmux/plugins/tpm/dot_git/packed-refs create mode 100644 dot_tmux/plugins/tpm/dot_git/refs/heads/master create mode 100644 dot_tmux/plugins/tpm/dot_git/refs/remotes/origin/HEAD create mode 100644 dot_tmux/plugins/tpm/dot_git/refs/tags/.keep create mode 100644 dot_tmux/plugins/tpm/dot_gitattributes create mode 100644 dot_tmux/plugins/tpm/dot_gitignore create mode 100644 dot_tmux/plugins/tpm/dot_gitmodules create mode 100644 dot_tmux/plugins/tpm/dot_travis.yml create mode 100644 dot_tmux/plugins/tpm/executable_tpm create mode 100644 dot_tmux/plugins/tpm/lib/tmux-test/.keep create mode 100644 dot_tmux/plugins/tpm/scripts/executable_check_tmux_version.sh create mode 100644 dot_tmux/plugins/tpm/scripts/executable_clean_plugins.sh create mode 100644 dot_tmux/plugins/tpm/scripts/executable_install_plugins.sh create mode 100644 dot_tmux/plugins/tpm/scripts/executable_source_plugins.sh create mode 100644 dot_tmux/plugins/tpm/scripts/executable_update_plugin.sh create mode 100644 dot_tmux/plugins/tpm/scripts/executable_update_plugin_prompt_handler.sh create mode 100644 dot_tmux/plugins/tpm/scripts/helpers/plugin_functions.sh create mode 100644 dot_tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh create mode 100644 dot_tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh create mode 100644 dot_tmux/plugins/tpm/scripts/helpers/tmux_utils.sh create mode 100644 dot_tmux/plugins/tpm/scripts/helpers/utility.sh create mode 100644 dot_tmux/plugins/tpm/scripts/variables.sh create mode 100644 dot_tmux/plugins/tpm/tests/executable_expect_failed_plugin_download create mode 100644 dot_tmux/plugins/tpm/tests/executable_expect_successful_clean_plugins create mode 100644 dot_tmux/plugins/tpm/tests/executable_expect_successful_multiple_plugins_download create mode 100644 dot_tmux/plugins/tpm/tests/executable_expect_successful_plugin_download create mode 100644 dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_a_single_plugin create mode 100644 dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_all_plugins create mode 100644 dot_tmux/plugins/tpm/tests/executable_test_plugin_clean.sh create mode 100644 dot_tmux/plugins/tpm/tests/executable_test_plugin_installation.sh create mode 100644 dot_tmux/plugins/tpm/tests/executable_test_plugin_installation_legacy.sh create mode 100644 dot_tmux/plugins/tpm/tests/executable_test_plugin_sourcing.sh create mode 100644 dot_tmux/plugins/tpm/tests/executable_test_plugin_update.sh create mode 100644 dot_tmux/plugins/tpm/tests/helpers/tpm.sh diff --git a/dot_tmux/plugins/tpm/CHANGELOG.md b/dot_tmux/plugins/tpm/CHANGELOG.md new file mode 100644 index 0000000..a9ce81e --- /dev/null +++ b/dot_tmux/plugins/tpm/CHANGELOG.md @@ -0,0 +1,86 @@ +# Changelog + +### master + +### v3.1.0, 2023-01-03 +- upgrade to new version of `tmux-test` +- bug: when using `emacs` copy mode, Enter does not quit screen after tpm + installation/update. Fix by making `Escape` the key for emacs mode. +- add a doc with troubleshooting instructions +- add `.gitattributes` file that forces linefeed characters (classic `\n`) as + line endings - helps with misconfigured git on windows/cygwin +- readme update: announce Cygwin support +- un-deprecate old plugin definition syntax: `set -g @tpm_plugins` +- More stuff, check `git log`. + +### v3.0.0, 2015-08-03 +- refactor `shared_set_tpm_path_constant` function +- move all instructions to `docs/` dir +- add `bin/install_plugins` cli executable script +- improved test runner function +- switch to using [tmux-test](https://github.com/tmux-plugins/tmux-test) + framework +- add `bin/update_plugins` cli executable script +- refactor test `expect` scripts, make them simpler and ensure they properly + assert expectations +- refactor code that sets 'TMUX_PLUGIN_MANAGER_PATH' global env var +- stop using global variable for 'tpm path' +- support defining plugins via `set -g @plugin` in sourced files as well + +### v2.0.0, 2015-07-07 +- enable overriding default key bindings +- start using `C-c` to clear screen +- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil) +- add new `set @plugin 'repo'` plugin definition syntax (@chilicuil) +- revert back to using `-g` flag in new plugin definition syntax +- permit leading whitespace with new plugin definition syntax (thanks @chilicuil) +- make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash +- ensure old/deprecated plugin syntax `set -g @tpm_plugins` works alongside new + `set -g @plugin` syntax + +### v1.2.2, 2015-02-08 +- set GIT_TERMINAL_PROMPT=0 when doing `git clone`, `pull` or `submodule update` + to ensure git does not prompt for username/password in any case + +### v1.2.1, 2014-11-21 +- change the way plugin name is expanded. It now uses the http username + and password by default, like this: `https://git::@github.com/`. This prevents + username and password prompt (and subsequently tmux install hanging) with old + git versions. Fixes #7. + +### v1.2.0, 2014-11-20 +- refactor tests so they can be used on travis +- add travis.yml, add travis badge to the readme + +### v1.1.0, 2014-11-19 +- if the plugin is not downloaded do not source it +- remove `PLUGINS.md`, an obsolete list of plugins +- update readme with instructions about uninstalling plugins +- tilde char and `$HOME` in `TMUX_SHARED_MANAGER_PATH` couldn't be used because + they are just plain strings. Fixing the problem by manually expanding them. +- bugfix: fragile `*.tmux` file globbing (@majutsushi) + +### v1.0.0, 2014-08-05 +- update readme because of github organization change to + [tmux-plugins](https://github.com/tmux-plugins) +- update tests to pass +- update README to suggest different first plugin +- update list of plugins in the README +- remove README 'about' section +- move key binding to the main file. Delete `key_binding.sh`. +- rename `display_message` -> `echo_message` +- installing plugins installs just new plugins. Already installed plugins aren't + updated. +- add 'update plugin' binding and functionality +- add test for updating a plugin + +### v0.0.2, 2014-07-17 +- run all *.tmux plugin files as executables +- fix all redirects to /dev/null +- fix bug: TPM shared path is created before sync (cloning plugins from github + is done) +- add test suite running in Vagrant +- add Tmux version check. `TPM` won't run if Tmux version is less than 1.9. + +### v0.0.1, 2014-05-21 +- get TPM up and running diff --git a/dot_tmux/plugins/tpm/HOW_TO_PLUGIN.md b/dot_tmux/plugins/tpm/HOW_TO_PLUGIN.md new file mode 100644 index 0000000..9901619 --- /dev/null +++ b/dot_tmux/plugins/tpm/HOW_TO_PLUGIN.md @@ -0,0 +1,2 @@ +Instructions moved to +[docs/how_to_create_plugin.md](docs/how_to_create_plugin.md). diff --git a/dot_tmux/plugins/tpm/LICENSE.md b/dot_tmux/plugins/tpm/LICENSE.md new file mode 100644 index 0000000..1222865 --- /dev/null +++ b/dot_tmux/plugins/tpm/LICENSE.md @@ -0,0 +1,20 @@ +MIT license +Copyright (C) 2014 Bruno Sutic + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dot_tmux/plugins/tpm/README.md b/dot_tmux/plugins/tpm/README.md new file mode 100644 index 0000000..2371863 --- /dev/null +++ b/dot_tmux/plugins/tpm/README.md @@ -0,0 +1,101 @@ +# Tmux Plugin Manager + +[![Build Status](https://travis-ci.org/tmux-plugins/tpm.svg?branch=master)](https://travis-ci.org/tmux-plugins/tpm) + +Installs and loads `tmux` plugins. + +Tested and working on Linux, OSX, and Cygwin. + +See list of plugins [here](https://github.com/tmux-plugins/list). + +### Installation + +Requirements: `tmux` version 1.9 (or higher), `git`, `bash`. + +Clone TPM: + +```bash +git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm +``` + +Put this at the bottom of `~/.tmux.conf` (`$XDG_CONFIG_HOME/tmux/tmux.conf` +works too): + +```bash +# List of plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' + +# Other examples: +# set -g @plugin 'github_username/plugin_name' +# set -g @plugin 'github_username/plugin_name#branch' +# set -g @plugin 'git@github.com:user/plugin' +# set -g @plugin 'git@bitbucket.com:user/plugin' + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' +``` + +Reload TMUX environment so TPM is sourced: + +```bash +# type this in terminal if tmux is already running +tmux source ~/.tmux.conf +``` + +That's it! + +### Installing plugins + +1. Add new plugin to `~/.tmux.conf` with `set -g @plugin '...'` +2. Press `prefix` + I (capital i, as in **I**nstall) to fetch the plugin. + +You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced. + +### Uninstalling plugins + +1. Remove (or comment out) plugin from the list. +2. Press `prefix` + alt + u (lowercase u as in **u**ninstall) to remove the plugin. + +All the plugins are installed to `~/.tmux/plugins/` so alternatively you can +find plugin directory there and remove it. + +### Key bindings + +`prefix` + I +- Installs new plugins from GitHub or any other git repository +- Refreshes TMUX environment + +`prefix` + U +- updates plugin(s) + +`prefix` + alt + u +- remove/uninstall plugins not on the plugin list + +### Docs + +- [Help, tpm not working](docs/tpm_not_working.md) - problem solutions + +More advanced features and instructions, regular users probably do not need +this: + +- [How to create a plugin](docs/how_to_create_plugin.md). It's easy. +- [Managing plugins via the command line](docs/managing_plugins_via_cmd_line.md) +- [Changing plugins install dir](docs/changing_plugins_install_dir.md) +- [Automatic TPM installation on a new machine](docs/automatic_tpm_installation.md) + +### Tests + +Tests for this project run on [Travis CI](https://travis-ci.org/tmux-plugins/tpm). + +When run locally, [vagrant](https://www.vagrantup.com/) is required. +Run tests with: + +```bash +# within project directory +./run_tests +``` + +### License + +[MIT](LICENSE.md) diff --git a/dot_tmux/plugins/tpm/bin/executable_clean_plugins b/dot_tmux/plugins/tpm/bin/executable_clean_plugins new file mode 100644 index 0000000..12f8730 --- /dev/null +++ b/dot_tmux/plugins/tpm/bin/executable_clean_plugins @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Script intended for use via the command line. +# +# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, +# but does not need to be started in order to run this script. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" + +main() { + "$SCRIPTS_DIR/clean_plugins.sh" # has correct exit code +} +main diff --git a/dot_tmux/plugins/tpm/bin/executable_install_plugins b/dot_tmux/plugins/tpm/bin/executable_install_plugins new file mode 100644 index 0000000..c66b15b --- /dev/null +++ b/dot_tmux/plugins/tpm/bin/executable_install_plugins @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Script intended for use via the command line. +# +# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, +# but does not need to be started in order to run this script. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" + +main() { + "$SCRIPTS_DIR/install_plugins.sh" # has correct exit code +} +main diff --git a/dot_tmux/plugins/tpm/bin/executable_update_plugins b/dot_tmux/plugins/tpm/bin/executable_update_plugins new file mode 100644 index 0000000..30a5646 --- /dev/null +++ b/dot_tmux/plugins/tpm/bin/executable_update_plugins @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# Script intended for use via the command line. +# +# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system, +# but does not need to be started in order to run this script. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +PROGRAM_NAME="$0" + +if [ $# -eq 0 ]; then + echo "usage:" + echo " $PROGRAM_NAME all update all plugins" + echo " $PROGRAM_NAME tmux-foo update plugin 'tmux-foo'" + echo " $PROGRAM_NAME tmux-bar tmux-baz update multiple plugins" + exit 1 +fi + +main() { + "$SCRIPTS_DIR/update_plugin.sh" --shell-echo "$*" # has correct exit code +} +main "$*" + diff --git a/dot_tmux/plugins/tpm/bindings/executable_clean_plugins b/dot_tmux/plugins/tpm/bindings/executable_clean_plugins new file mode 100644 index 0000000..9a0d5d7 --- /dev/null +++ b/dot_tmux/plugins/tpm/bindings/executable_clean_plugins @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Tmux key-binding script. +# Scripts intended to be used via the command line are in `bin/` directory. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +HELPERS_DIR="$SCRIPTS_DIR/helpers" + +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +main() { + reload_tmux_environment + "$SCRIPTS_DIR/clean_plugins.sh" --tmux-echo >/dev/null 2>&1 + reload_tmux_environment + end_message +} +main diff --git a/dot_tmux/plugins/tpm/bindings/executable_install_plugins b/dot_tmux/plugins/tpm/bindings/executable_install_plugins new file mode 100644 index 0000000..3ade3c4 --- /dev/null +++ b/dot_tmux/plugins/tpm/bindings/executable_install_plugins @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Tmux key-binding script. +# Scripts intended to be used via the command line are in `bin/` directory. + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +HELPERS_DIR="$SCRIPTS_DIR/helpers" + +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +main() { + reload_tmux_environment + "$SCRIPTS_DIR/install_plugins.sh" --tmux-echo >/dev/null 2>&1 + reload_tmux_environment + end_message +} +main diff --git a/dot_tmux/plugins/tpm/bindings/executable_update_plugins b/dot_tmux/plugins/tpm/bindings/executable_update_plugins new file mode 100644 index 0000000..28cc281 --- /dev/null +++ b/dot_tmux/plugins/tpm/bindings/executable_update_plugins @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# Tmux key-binding script. +# Scripts intended to be used via the command line are in `bin/` directory. + +# This script: +# - shows a list of installed plugins +# - starts a prompt to enter the name of the plugin that will be updated + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPTS_DIR="$CURRENT_DIR/../scripts" +HELPERS_DIR="$SCRIPTS_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +display_plugin_update_list() { + local plugins="$(tpm_plugins_list_helper)" + tmux_echo "Installed plugins:" + tmux_echo "" + + for plugin in $plugins; do + # displaying only installed plugins + if plugin_already_installed "$plugin"; then + local plugin_name="$(plugin_name_helper "$plugin")" + tmux_echo " $plugin_name" + fi + done + + tmux_echo "" + tmux_echo "Type plugin name to update it." + tmux_echo "" + tmux_echo "- \"all\" - updates all plugins" + tmux_echo "- ENTER - cancels" +} + +update_plugin_prompt() { + tmux command-prompt -p 'plugin update:' " \ + send-keys C-c; \ + run-shell '$SCRIPTS_DIR/update_plugin_prompt_handler.sh %1'" +} + +main() { + reload_tmux_environment + display_plugin_update_list + update_plugin_prompt +} +main diff --git a/dot_tmux/plugins/tpm/docs/automatic_tpm_installation.md b/dot_tmux/plugins/tpm/docs/automatic_tpm_installation.md new file mode 100644 index 0000000..630573f --- /dev/null +++ b/dot_tmux/plugins/tpm/docs/automatic_tpm_installation.md @@ -0,0 +1,12 @@ +# Automatic tpm installation + +One of the first things we do on a new machine is cloning our dotfiles. Not everything comes with them though, so for example `tpm` most likely won't be installed. + +If you want to install `tpm` and plugins automatically when tmux is started, put the following snippet in `.tmux.conf` before the final `run '~/.tmux/plugins/tpm/tpm'`: + +``` +if "test ! -d ~/.tmux/plugins/tpm" \ + "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'" +``` + +This useful tip was submitted by @acr4 and narfman0. diff --git a/dot_tmux/plugins/tpm/docs/changing_plugins_install_dir.md b/dot_tmux/plugins/tpm/docs/changing_plugins_install_dir.md new file mode 100644 index 0000000..27de96d --- /dev/null +++ b/dot_tmux/plugins/tpm/docs/changing_plugins_install_dir.md @@ -0,0 +1,16 @@ +# Changing plugins install dir + +By default, TPM installs plugins in a subfolder named `plugins/` inside +`$XDG_CONFIG_HOME/tmux/` if a `tmux.conf` file was found at that location, or +inside `~/.tmux/` otherwise. + +You can change the install path by putting this in `.tmux.conf`: + + set-environment -g TMUX_PLUGIN_MANAGER_PATH '/some/other/path/' + +Tmux plugin manager initialization in `.tmux.conf` should also be updated: + + # initializes TMUX plugin manager in a new path + run /some/other/path/tpm/tpm + +Please make sure that the `run` line is at the very bottom of `.tmux.conf`. diff --git a/dot_tmux/plugins/tpm/docs/how_to_create_plugin.md b/dot_tmux/plugins/tpm/docs/how_to_create_plugin.md new file mode 100644 index 0000000..f7d9c13 --- /dev/null +++ b/dot_tmux/plugins/tpm/docs/how_to_create_plugin.md @@ -0,0 +1,108 @@ +# How to create Tmux plugins + +Creating a new plugin is easy. + +For demonstration purposes we'll create a simple plugin that lists all +installed TPM plugins. Yes, a plugin that lists plugins :) We'll bind that to +`prefix + T`. + +The source code for this example plugin can be found +[here](https://github.com/tmux-plugins/tmux-example-plugin). + +### 1. create a new git project + +TPM depends on git for downloading and updating plugins. + +To create a new git project: + + $ mkdir tmux_my_plugin + $ cd tmux_my_plugin + $ git init + +### 2. create a `*.tmux` plugin run file + +When it sources a plugin, TPM executes all `*.tmux` files in your plugins' +directory. That's how plugins are run. + +Create a plugin run file in plugin directory: + + $ touch my_plugin.tmux + $ chmod u+x my_plugin.tmux + +You can have more than one `*.tmux` file, and all will get executed. However, usually +you'll need just one. + +### 3. create a plugin key binding + +We want the behavior of the plugin to trigger when a user hits `prefix + T`. + +Key `T` is chosen because: + - it's "kind of" a mnemonic for `TPM` + - the key is not used by Tmux natively. Tmux man page, KEY BINDINGS section + contains a list of all the bindings Tmux uses. There's plenty of unused keys + and we don't want to override any of Tmux default key bindings. + +Open the plugin run file in your favorite text editor: + + $ vim my_plugin.tmux + # or + $ subl my_plugin.tmux + +Put the following content in the file: + + #!/usr/bin/env bash + + CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + tmux bind-key T run-shell "$CURRENT_DIR/scripts/tmux_list_plugins.sh" + +As you can see, plugin run file is a simple bash script that sets up the binding. + +When pressed, `prefix + T` will execute another shell script: +`tmux_list_plugins.sh`. That script should be in `scripts/` directory - +relative to the plugin run file. + + +### 4. listing plugins + +Now that we have the binding, let's create a script that's invoked with +`prefix + T`. + + $ mkdir scripts + $ touch scripts/tmux_list_plugins.sh + $ chmod u+x scripts/tmux_list_plugins.sh + +And here's the script content: + + #!/usr/bin/env bash + + # fetching the directory where plugins are installed + plugin_path="$(tmux show-env -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)" + + # listing installed plugins + ls -1 "$plugin_path" + +### 5. try it out + +To see if this works, execute the plugin run file: + + $ ./my_plugin.tmux + +That should set up the key binding. Now hit `prefix + T` and see if it works. + +### 6. publish the plugin + +When everything is ready, push the plugin to an online git repository, +preferably GitHub. + +Other users can install your plugin by just adding plugin git URL to the +`@plugin` list in their `.tmux.conf`. + +If the plugin is on GitHub, your users will be able to use the shorthand of +`github_username/repository`. + +### Conclusion + +Hopefully, that was easy. As you can see, it's mostly shell scripting. + +You can use other scripting languages (ruby, python etc) but plain old shell +is preferred because of portability. diff --git a/dot_tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md b/dot_tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md new file mode 100644 index 0000000..7aefd7d --- /dev/null +++ b/dot_tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md @@ -0,0 +1,36 @@ +# Managing plugins via the command line + +Aside from tmux key bindings, TPM provides shell interface for managing plugins +via scripts located in [bin/](../bin/) directory. + +Tmux does not need to be started in order to run scripts (but it's okay if it +is). If you [changed tpm install dir](../docs/changing_plugins_install_dir.md) +in `.tmux.conf` that should work fine too. + +Prerequisites: + +- tmux installed on the system (doh) +- `.tmux.conf` set up for TPM + +### Installing plugins + +As usual, plugins need to be specified in `.tmux.conf`. Run the following +command to install plugins: + + ~/.tmux/plugins/tpm/bin/install_plugins + +### Updating plugins + +To update all installed plugins: + + ~/.tmux/plugins/tpm/bin/update_plugins all + +or update a single plugin: + + ~/.tmux/plugins/tpm/bin/update_plugins tmux-sensible + +### Removing plugins + +To remove plugins not on the plugin list: + + ~/.tmux/plugins/tpm/bin/clean_plugins diff --git a/dot_tmux/plugins/tpm/docs/tpm_not_working.md b/dot_tmux/plugins/tpm/docs/tpm_not_working.md new file mode 100644 index 0000000..6680291 --- /dev/null +++ b/dot_tmux/plugins/tpm/docs/tpm_not_working.md @@ -0,0 +1,102 @@ +# Help, tpm not working! + +Here's the list of issues users had with `tpm`: + +
+ +> Nothing works. `tpm` key bindings `prefix + I`, `prefix + U` not even + defined. + +Related [issue #22](https://github.com/tmux-plugins/tpm/issues/22) + +- Do you have required `tmux` version to run `tpm`?
+ Check `tmux` version with `$ tmux -V` command and make sure it's higher or + equal to the required version for `tpm` as stated in the readme. + +- ZSH tmux plugin might be causing issues.
+ If you have it installed, try disabling it and see if `tpm` works then. + +
+ +> Help, I'm using custom config file with `tmux -f /path/to/my_tmux.conf` +to start Tmux and for some reason plugins aren't loaded!? + +Related [issue #57](https://github.com/tmux-plugins/tpm/issues/57) + +`tpm` has a known issue when using custom config file with `-f` option. +The solution is to use alternative plugin definition syntax. Here are the steps +to make it work: + +1. remove all `set -g @plugin` lines from tmux config file +2. in the config file define the plugins in the following way: + + # List of plugins + set -g @tpm_plugins ' \ + tmux-plugins/tpm \ + tmux-plugins/tmux-sensible \ + tmux-plugins/tmux-resurrect \ + ' + + # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) + run '~/.tmux/plugins/tpm/tpm' + +3. Reload TMUX environment so TPM is sourced: `$ tmux source /path/to/my_tmux.conf` + +The plugins should now be working. + +
+ +> Weird sequence of characters show up when installing or updating plugins + +Related: [issue #25](https://github.com/tmux-plugins/tpm/issues/25) + +- This could be caused by [tmuxline.vim](https://github.com/edkolev/tmuxline.vim) + plugin. Uninstall it and see if things work. + +
+ +> "failed to connect to server" error when sourcing .tmux.conf + +Related: [issue #48](https://github.com/tmux-plugins/tpm/issues/48) + +- Make sure `tmux source ~/.tmux.conf` command is ran from inside `tmux`. + +
+ +> tpm not working: '~/.tmux/plugins/tpm/tpm' returned 2 (Windows / Cygwin) + +Related: [issue #81](https://github.com/tmux-plugins/tpm/issues/81) + +This issue is most likely caused by Windows line endings. For example, if you +have git's `core.autocrlf` option set to `true`, git will automatically convert +all the files to Windows line endings which might cause a problem. + +The solution is to convert all line ending to Unix newline characters. This +command handles that for all files under `.tmux/` dir (skips `.git` +subdirectories): + +```bash +find ~/.tmux -type d -name '.git*' -prune -o -type f -print0 | xargs -0 dos2unix +``` + +
+ +> '~/.tmux/plugins/tpm/tpm' returned 127 (on macOS, w/ tmux installed using brew) + +Related: [issue #67](https://github.com/tmux-plugins/tpm/issues/67) + +This problem is because tmux's `run-shell` command runs a shell which doesn't read from user configs, thus tmux installed in a brew prefix (e.g. `/usr/local/bin`) will not be found. + +The solution is to find your brew prefix + +```sh +> echo "$(brew --prefix)/bin" +/opt/homebrew/bin +``` + +And prepend it to the `PATH` environment variable +``` +set-environment -g PATH "/opt/homebrew/bin:/bin:/usr/bin" +``` + +before any `run-shell`/`run` commands in `~/.tmux.conf`. diff --git a/dot_tmux/plugins/tpm/dot_git/HEAD b/dot_tmux/plugins/tpm/dot_git/HEAD new file mode 100644 index 0000000..cb089cd --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/dot_tmux/plugins/tpm/dot_git/config b/dot_tmux/plugins/tpm/dot_git/config new file mode 100644 index 0000000..e20a621 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/config @@ -0,0 +1,11 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + url = https://github.com/tmux-plugins/tpm + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master diff --git a/dot_tmux/plugins/tpm/dot_git/description b/dot_tmux/plugins/tpm/dot_git/description new file mode 100644 index 0000000..498b267 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_applypatch-msg.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_applypatch-msg.sample new file mode 100644 index 0000000..a5d7b84 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_applypatch-msg.sample @@ -0,0 +1,15 @@ +#!/bin/sh +# +# An example hook script to check the commit log message taken by +# applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. The hook is +# allowed to edit the commit message file. +# +# To enable this hook, rename this file to "applypatch-msg". + +. git-sh-setup +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} +: diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_commit-msg.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_commit-msg.sample new file mode 100644 index 0000000..b58d118 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_commit-msg.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to check the commit log message. +# Called by "git commit" with one argument, the name of the file +# that has the commit message. The hook should exit with non-zero +# status after issuing an appropriate message if it wants to stop the +# commit. The hook is allowed to edit the commit message file. +# +# To enable this hook, rename this file to "commit-msg". + +# Uncomment the below to add a Signed-off-by line to the message. +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg +# hook is more suited to it. +# +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" + +# This example catches duplicate Signed-off-by lines. + +test "" = "$(grep '^Signed-off-by: ' "$1" | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { + echo >&2 Duplicate Signed-off-by lines. + exit 1 +} diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_fsmonitor-watchman.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_fsmonitor-watchman.sample new file mode 100644 index 0000000..23e856f --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_fsmonitor-watchman.sample @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use IPC::Open2; + +# An example hook script to integrate Watchman +# (https://facebook.github.io/watchman/) with git to speed up detecting +# new and modified files. +# +# The hook is passed a version (currently 2) and last update token +# formatted as a string and outputs to stdout a new update token and +# all files that have been modified since the update token. Paths must +# be relative to the root of the working tree and separated by a single NUL. +# +# To enable this hook, rename this file to "query-watchman" and set +# 'git config core.fsmonitor .git/hooks/query-watchman' +# +my ($version, $last_update_token) = @ARGV; + +# Uncomment for debugging +# print STDERR "$0 $version $last_update_token\n"; + +# Check the hook interface version +if ($version ne 2) { + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; +} + +my $git_work_tree = get_working_dir(); + +my $retry = 1; + +my $json_pkg; +eval { + require JSON::XS; + $json_pkg = "JSON::XS"; + 1; +} or do { + require JSON::PP; + $json_pkg = "JSON::PP"; +}; + +launch_watchman(); + +sub launch_watchman { + my $o = watchman_query(); + if (is_work_tree_watched($o)) { + output_result($o->{clock}, @{$o->{files}}); + } +} + +sub output_result { + my ($clockid, @files) = @_; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # binmode $fh, ":utf8"; + # print $fh "$clockid\n@files\n"; + # close $fh; + + binmode STDOUT, ":utf8"; + print $clockid; + print "\0"; + local $, = "\0"; + print @files; +} + +sub watchman_clock { + my $response = qx/watchman clock "$git_work_tree"/; + die "Failed to get clock id on '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + + return $json_pkg->new->utf8->decode($response); +} + +sub watchman_query { + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') + or die "open2() failed: $!\n" . + "Falling back to scanning...\n"; + + # In the query expression below we're asking for names of files that + # changed since $last_update_token but not from the .git folder. + # + # To accomplish this, we're using the "since" generator to use the + # recency index to select candidate nodes and "fields" to limit the + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + my $last_update_line = ""; + if (substr($last_update_token, 0, 1) eq "c") { + $last_update_token = "\"$last_update_token\""; + $last_update_line = qq[\n"since": $last_update_token,]; + } + my $query = <<" END"; + ["query", "$git_work_tree", {$last_update_line + "fields": ["name"], + "expression": ["not", ["dirname", ".git"]] + }] + END + + # Uncomment for debugging the watchman query + # open (my $fh, ">", ".git/watchman-query.json"); + # print $fh $query; + # close $fh; + + print CHLD_IN $query; + close CHLD_IN; + my $response = do {local $/; }; + + # Uncomment for debugging the watch response + # open ($fh, ">", ".git/watchman-response.json"); + # print $fh $response; + # close $fh; + + die "Watchman: command returned no output.\n" . + "Falling back to scanning...\n" if $response eq ""; + die "Watchman: command returned invalid output: $response\n" . + "Falling back to scanning...\n" unless $response =~ /^\{/; + + return $json_pkg->new->utf8->decode($response); +} + +sub is_work_tree_watched { + my ($output) = @_; + my $error = $output->{error}; + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { + $retry--; + my $response = qx/watchman watch "$git_work_tree"/; + die "Failed to make watchman watch '$git_work_tree'.\n" . + "Falling back to scanning...\n" if $? != 0; + $output = $json_pkg->new->utf8->decode($response); + $error = $output->{error}; + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + # Uncomment for debugging watchman output + # open (my $fh, ">", ".git/watchman-output.out"); + # close $fh; + + # Watchman will always return all files on the first query so + # return the fast "everything is dirty" flag to git and do the + # Watchman query just to get it over with now so we won't pay + # the cost in git to look up each individual file. + my $o = watchman_clock(); + $error = $output->{error}; + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + output_result($o->{clock}, ("/")); + $last_update_token = $o->{clock}; + + eval { launch_watchman() }; + return 0; + } + + die "Watchman: $error.\n" . + "Falling back to scanning...\n" if $error; + + return 1; +} + +sub get_working_dir { + my $working_dir; + if ($^O =~ 'msys' || $^O =~ 'cygwin') { + $working_dir = Win32::GetCwd(); + $working_dir =~ tr/\\/\//; + } else { + require Cwd; + $working_dir = Cwd::cwd(); + } + + return $working_dir; +} diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_post-update.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_post-update.sample new file mode 100644 index 0000000..ec17ec1 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_post-update.sample @@ -0,0 +1,8 @@ +#!/bin/sh +# +# An example hook script to prepare a packed repository for use over +# dumb transports. +# +# To enable this hook, rename this file to "post-update". + +exec git update-server-info diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-applypatch.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-applypatch.sample new file mode 100644 index 0000000..4142082 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-applypatch.sample @@ -0,0 +1,14 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed +# by applypatch from an e-mail message. +# +# The hook should exit with non-zero status after issuing an +# appropriate message if it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-applypatch". + +. git-sh-setup +precommit="$(git rev-parse --git-path hooks/pre-commit)" +test -x "$precommit" && exec "$precommit" ${1+"$@"} +: diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-commit.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-commit.sample new file mode 100644 index 0000000..29ed5ee --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-commit.sample @@ -0,0 +1,49 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=$(git hash-object -t tree /dev/null) +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --type=bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff-index --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. + +This can cause problems if you want to work with people on other platforms. + +To be portable it is advisable to rename the file. + +If you know what you are doing you can disable this check using: + + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +exec git diff-index --check --cached $against -- diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-merge-commit.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-merge-commit.sample new file mode 100644 index 0000000..399eab1 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-merge-commit.sample @@ -0,0 +1,13 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git merge" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message to +# stderr if it wants to stop the merge commit. +# +# To enable this hook, rename this file to "pre-merge-commit". + +. git-sh-setup +test -x "$GIT_DIR/hooks/pre-commit" && + exec "$GIT_DIR/hooks/pre-commit" +: diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-push.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-push.sample new file mode 100644 index 0000000..4ce688d --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-push.sample @@ -0,0 +1,53 @@ +#!/bin/sh + +# An example hook script to verify what is about to be pushed. Called by "git +# push" after it has checked the remote status, but before anything has been +# pushed. If this script exits with a non-zero status nothing will be pushed. +# +# This hook is called with the following parameters: +# +# $1 -- Name of the remote to which the push is being done +# $2 -- URL to which the push is being done +# +# If pushing without using a named remote those arguments will be equal. +# +# Information about the commits which are being pushed is supplied as lines to +# the standard input in the form: +# +# +# +# This sample shows how to prevent push of commits where the log message starts +# with "WIP" (work in progress). + +remote="$1" +url="$2" + +zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" + exit 1 + fi + fi +done + +exit 0 diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-rebase.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-rebase.sample new file mode 100644 index 0000000..6cbef5c --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-rebase.sample @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 2006, 2008 Junio C Hamano +# +# The "pre-rebase" hook is run just before "git rebase" starts doing +# its job, and can prevent the command from running by exiting with +# non-zero status. +# +# The hook is called with the following parameters: +# +# $1 -- the upstream the series was forked from. +# $2 -- the branch being rebased (or empty when rebasing the current branch). +# +# This sample shows how to prevent topic branches that are already +# merged to 'next' branch from getting rebased, because allowing it +# would result in rebasing already published history. + +publish=next +basebranch="$1" +if test "$#" = 2 +then + topic="refs/heads/$2" +else + topic=`git symbolic-ref HEAD` || + exit 0 ;# we do not interrupt rebasing detached HEAD +fi + +case "$topic" in +refs/heads/??/*) + ;; +*) + exit 0 ;# we do not interrupt others. + ;; +esac + +# Now we are dealing with a topic branch being rebased +# on top of master. Is it OK to rebase it? + +# Does the topic really exist? +git show-ref -q "$topic" || { + echo >&2 "No such branch $topic" + exit 1 +} + +# Is topic fully merged to master? +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` +if test -z "$not_in_master" +then + echo >&2 "$topic is fully merged to master; better remove it." + exit 1 ;# we could allow it, but there is no point. +fi + +# Is topic ever merged to next? If so you should not be rebasing it. +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` +only_next_2=`git rev-list ^master ${publish} | sort` +if test "$only_next_1" = "$only_next_2" +then + not_in_topic=`git rev-list "^$topic" master` + if test -z "$not_in_topic" + then + echo >&2 "$topic is already up to date with master" + exit 1 ;# we could allow it, but there is no point. + else + exit 0 + fi +else + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` + /usr/bin/perl -e ' + my $topic = $ARGV[0]; + my $msg = "* $topic has commits already merged to public branch:\n"; + my (%not_in_next) = map { + /^([0-9a-f]+) /; + ($1 => 1); + } split(/\n/, $ARGV[1]); + for my $elem (map { + /^([0-9a-f]+) (.*)$/; + [$1 => $2]; + } split(/\n/, $ARGV[2])) { + if (!exists $not_in_next{$elem->[0]}) { + if ($msg) { + print STDERR $msg; + undef $msg; + } + print STDERR " $elem->[1]\n"; + } + } + ' "$topic" "$not_in_next" "$not_in_master" + exit 1 +fi + +<<\DOC_END + +This sample hook safeguards topic branches that have been +published from being rewound. + +The workflow assumed here is: + + * Once a topic branch forks from "master", "master" is never + merged into it again (either directly or indirectly). + + * Once a topic branch is fully cooked and merged into "master", + it is deleted. If you need to build on top of it to correct + earlier mistakes, a new topic branch is created by forking at + the tip of the "master". This is not strictly necessary, but + it makes it easier to keep your history simple. + + * Whenever you need to test or publish your changes to topic + branches, merge them into "next" branch. + +The script, being an example, hardcodes the publish branch name +to be "next", but it is trivial to make it configurable via +$GIT_DIR/config mechanism. + +With this workflow, you would want to know: + +(1) ... if a topic branch has ever been merged to "next". Young + topic branches can have stupid mistakes you would rather + clean up before publishing, and things that have not been + merged into other branches can be easily rebased without + affecting other people. But once it is published, you would + not want to rewind it. + +(2) ... if a topic branch has been fully merged to "master". + Then you can delete it. More importantly, you should not + build on top of it -- other people may already want to + change things related to the topic as patches against your + "master", so if you need further changes, it is better to + fork the topic (perhaps with the same name) afresh from the + tip of "master". + +Let's look at this example: + + o---o---o---o---o---o---o---o---o---o "next" + / / / / + / a---a---b A / / + / / / / + / / c---c---c---c B / + / / / \ / + / / / b---b C \ / + / / / / \ / + ---o---o---o---o---o---o---o---o---o---o---o "master" + + +A, B and C are topic branches. + + * A has one fix since it was merged up to "next". + + * B has finished. It has been fully merged up to "master" and "next", + and is ready to be deleted. + + * C has not merged to "next" at all. + +We would want to allow C to be rebased, refuse A, and encourage +B to be deleted. + +To compute (1): + + git rev-list ^master ^topic next + git rev-list ^master next + + if these match, topic has not merged in next at all. + +To compute (2): + + git rev-list master..topic + + if this is empty, it is fully merged to "master". + +DOC_END diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-receive.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-receive.sample new file mode 100644 index 0000000..a1fd29e --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_pre-receive.sample @@ -0,0 +1,24 @@ +#!/bin/sh +# +# An example hook script to make use of push options. +# The example simply echoes all push options that start with 'echoback=' +# and rejects all pushes when the "reject" push option is used. +# +# To enable this hook, rename this file to "pre-receive". + +if test -n "$GIT_PUSH_OPTION_COUNT" +then + i=0 + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" + do + eval "value=\$GIT_PUSH_OPTION_$i" + case "$value" in + echoback=*) + echo "echo from the pre-receive-hook: ${value#*=}" >&2 + ;; + reject) + exit 1 + esac + i=$((i + 1)) + done +fi diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_prepare-commit-msg.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_prepare-commit-msg.sample new file mode 100644 index 0000000..10fa14c --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_prepare-commit-msg.sample @@ -0,0 +1,42 @@ +#!/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +# case "$COMMIT_SOURCE,$SHA1" in +# ,|template,) +# /usr/bin/perl -i.bak -pe ' +# print "\n" . `git diff --cached --name-status -r` +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; +# *) ;; +# esac + +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" +# if test -z "$COMMIT_SOURCE" +# then +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" +# fi diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_push-to-checkout.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_push-to-checkout.sample new file mode 100644 index 0000000..af5a0c0 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_push-to-checkout.sample @@ -0,0 +1,78 @@ +#!/bin/sh + +# An example hook script to update a checked-out tree on a git push. +# +# This hook is invoked by git-receive-pack(1) when it reacts to git +# push and updates reference(s) in its repository, and when the push +# tries to update the branch that is currently checked out and the +# receive.denyCurrentBranch configuration variable is set to +# updateInstead. +# +# By default, such a push is refused if the working tree and the index +# of the remote repository has any difference from the currently +# checked out commit; when both the working tree and the index match +# the current commit, they are updated to match the newly pushed tip +# of the branch. This hook is to be used to override the default +# behaviour; however the code below reimplements the default behaviour +# as a starting point for convenient modification. +# +# The hook receives the commit with which the tip of the current +# branch is going to be updated: +commit=$1 + +# It can exit with a non-zero status to refuse the push (when it does +# so, it must not modify the index or the working tree). +die () { + echo >&2 "$*" + exit 1 +} + +# Or it can make any necessary changes to the working tree and to the +# index to bring them to the desired state when the tip of the current +# branch is updated to the new commit, and exit with a zero status. +# +# For example, the hook can simply run git read-tree -u -m HEAD "$1" +# in order to emulate git fetch that is run in the reverse direction +# with git push, as the two-tree form of git read-tree -u -m is +# essentially the same as git switch or git checkout that switches +# branches while keeping the local changes in the working tree that do +# not interfere with the difference between the branches. + +# The below is a more-or-less exact translation to shell of the C code +# for the default behaviour for git's push-to-checkout hook defined in +# the push_to_deploy() function in builtin/receive-pack.c. +# +# Note that the hook will be executed from the repository directory, +# not from the working tree, so if you want to perform operations on +# the working tree, you will have to adapt your code accordingly, e.g. +# by adding "cd .." or using relative paths. + +if ! git update-index -q --ignore-submodules --refresh +then + die "Up-to-date check failed" +fi + +if ! git diff-files --quiet --ignore-submodules -- +then + die "Working directory has unstaged changes" +fi + +# This is a rough translation of: +# +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX +if git cat-file -e HEAD 2>/dev/null +then + head=HEAD +else + head=$(git hash-object -t tree --stdin &2 + exit 1 +} + +unset GIT_DIR GIT_WORK_TREE +cd "$worktree" && + +if grep -q "^diff --git " "$1" +then + validate_patch "$1" +else + validate_cover_letter "$1" +fi && + +if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" +then + git config --unset-all sendemail.validateWorktree && + trap 'git worktree remove -ff "$worktree"' EXIT && + validate_series +fi diff --git a/dot_tmux/plugins/tpm/dot_git/hooks/executable_update.sample b/dot_tmux/plugins/tpm/dot_git/hooks/executable_update.sample new file mode 100644 index 0000000..c4d426b --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/hooks/executable_update.sample @@ -0,0 +1,128 @@ +#!/bin/sh +# +# An example hook script to block unannotated tags from entering. +# Called by "git receive-pack" with arguments: refname sha1-old sha1-new +# +# To enable this hook, rename this file to "update". +# +# Config +# ------ +# hooks.allowunannotated +# This boolean sets whether unannotated tags will be allowed into the +# repository. By default they won't be. +# hooks.allowdeletetag +# This boolean sets whether deleting tags will be allowed in the +# repository. By default they won't be. +# hooks.allowmodifytag +# This boolean sets whether a tag may be modified after creation. By default +# it won't be. +# hooks.allowdeletebranch +# This boolean sets whether deleting branches will be allowed in the +# repository. By default they won't be. +# hooks.denycreatebranch +# This boolean sets whether remotely creating branches will be denied +# in the repository. By default this is allowed. +# + +# --- Command line +refname="$1" +oldrev="$2" +newrev="$3" + +# --- Safety check +if [ -z "$GIT_DIR" ]; then + echo "Don't run this script from the command line." >&2 + echo " (if you want, you could supply GIT_DIR then run" >&2 + echo " $0 )" >&2 + exit 1 +fi + +if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +# --- Config +allowunannotated=$(git config --type=bool hooks.allowunannotated) +allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) +denycreatebranch=$(git config --type=bool hooks.denycreatebranch) +allowdeletetag=$(git config --type=bool hooks.allowdeletetag) +allowmodifytag=$(git config --type=bool hooks.allowmodifytag) + +# check for no description +projectdesc=$(sed -e '1q' "$GIT_DIR/description") +case "$projectdesc" in +"Unnamed repository"* | "") + echo "*** Project description file hasn't been set" >&2 + exit 1 + ;; +esac + +# --- Check types +# if $newrev is 0000...0000, it's a commit to delete a ref. +zero=$(git hash-object --stdin &2 + echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 + exit 1 + fi + ;; + refs/tags/*,delete) + # delete tag + if [ "$allowdeletetag" != "true" ]; then + echo "*** Deleting a tag is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/tags/*,tag) + # annotated tag + if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 + then + echo "*** Tag '$refname' already exists." >&2 + echo "*** Modifying a tag is not allowed in this repository." >&2 + exit 1 + fi + ;; + refs/heads/*,commit) + # branch + if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then + echo "*** Creating a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/heads/*,delete) + # delete branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + refs/remotes/*,commit) + # tracking branch + ;; + refs/remotes/*,delete) + # delete tracking branch + if [ "$allowdeletebranch" != "true" ]; then + echo "*** Deleting a tracking branch is not allowed in this repository" >&2 + exit 1 + fi + ;; + *) + # Anything else (is there anything else?) + echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 + exit 1 + ;; +esac + +# --- Finished +exit 0 diff --git a/dot_tmux/plugins/tpm/dot_git/index b/dot_tmux/plugins/tpm/dot_git/index new file mode 100644 index 0000000000000000000000000000000000000000..731784a9bb307caa0bebe1e6330b7803809ea861 GIT binary patch literal 4488 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 G@AU!Da!arP literal 0 HcmV?d00001 diff --git a/dot_tmux/plugins/tpm/dot_git/info/exclude b/dot_tmux/plugins/tpm/dot_git/info/exclude new file mode 100644 index 0000000..a5196d1 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/dot_tmux/plugins/tpm/dot_git/logs/HEAD b/dot_tmux/plugins/tpm/dot_git/logs/HEAD new file mode 100644 index 0000000..09c9a2f --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/logs/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 99469c4a9b1ccf77fade25842dc7bafbc8ce9946 lew 1761926537 +0000 clone: from https://github.com/tmux-plugins/tpm diff --git a/dot_tmux/plugins/tpm/dot_git/logs/refs/heads/master b/dot_tmux/plugins/tpm/dot_git/logs/refs/heads/master new file mode 100644 index 0000000..09c9a2f --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 99469c4a9b1ccf77fade25842dc7bafbc8ce9946 lew 1761926537 +0000 clone: from https://github.com/tmux-plugins/tpm diff --git a/dot_tmux/plugins/tpm/dot_git/logs/refs/remotes/origin/HEAD b/dot_tmux/plugins/tpm/dot_git/logs/refs/remotes/origin/HEAD new file mode 100644 index 0000000..09c9a2f --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/logs/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 99469c4a9b1ccf77fade25842dc7bafbc8ce9946 lew 1761926537 +0000 clone: from https://github.com/tmux-plugins/tpm diff --git a/dot_tmux/plugins/tpm/dot_git/objects/info/.keep b/dot_tmux/plugins/tpm/dot_git/objects/info/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_tmux/plugins/tpm/dot_git/objects/pack/readonly_pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.idx b/dot_tmux/plugins/tpm/dot_git/objects/pack/readonly_pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.idx new file mode 100644 index 0000000000000000000000000000000000000000..fc1e896352a0fadc781b31d223911233363f2d19 GIT binary patch literal 29436 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

s3)U&-D0E_XCSFwDTm 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 z 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

Q; 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

$pYWV>t${A58z>Gls%M76(7!ejI#L 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≷_uu^ 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 WHXQnE`y%$W?9;iMU9PTYmIMHyt?5nx literal 0 HcmV?d00001 diff --git a/dot_tmux/plugins/tpm/dot_git/objects/pack/readonly_pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.rev b/dot_tmux/plugins/tpm/dot_git/objects/pack/readonly_pack-1f8e91c4b0c2fd3de85deb1de59db344d5af0319.rev new file mode 100644 index 0000000000000000000000000000000000000000..a0d7d6d81724c7db6a532517bfda65696d6b2336 GIT binary patch literal 4104 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 E09zFf-~a#s literal 0 HcmV?d00001 diff --git a/dot_tmux/plugins/tpm/dot_git/packed-refs b/dot_tmux/plugins/tpm/dot_git/packed-refs new file mode 100644 index 0000000..aae3407 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/packed-refs @@ -0,0 +1,24 @@ +# pack-refs with: peeled fully-peeled sorted +aeb196db5c13161defbac64314d47ca346b34826 refs/remotes/origin/fix-automatic-tpm-install +bfc7a2c2cbbbb0c448b23396bdb7bf088b8c6dc3 refs/remotes/origin/fix_emacs_continue_key +99469c4a9b1ccf77fade25842dc7bafbc8ce9946 refs/remotes/origin/master +e1bbcd6f8b7db9df823632d4140fb4bbd65798d3 refs/remotes/origin/travis_install_tmux_from_source +aee1fbc949e1f68db3d8da7ac1b9bee5b4ac1595 refs/tags/v0.0.1 +e29045e1db9ad6e1e9cf72ab59b78f0ec72cafb8 refs/tags/v0.0.2 +^e68e4d52e4d0acb0691fb99d07de922142cc6759 +d520c6a47a40dc1ab0e7799d95514c5aab000a8f refs/tags/v1.0.0 +^f44ae34d112beceead7f09994cb057fe5b136b57 +0794614b55ea7c9b7c07306e64a09b8ac1207a2e refs/tags/v1.1.0 +^604cca0e8ae0479b850bf62e8030a8f421513598 +1e65a591ab5972ff9072f2c07608ee1dd0b88eb7 refs/tags/v1.2.0 +^7c10afc0612f1d1c69837cbc65b20f22c864141d +92ba10978b6e9a7a767ed2ddb9c7190f9956789a refs/tags/v1.2.1 +^db8b06c509e44a60c4ec3132fc9839ebe1bbf08a +5957fe6b4644e75ba0740a94faf97307eb31046d refs/tags/v1.2.2 +^330176355013884fa04caf7fbac0df8be2349273 +79c45e42bf525de25a12689f3770ff1f1d30a1aa refs/tags/v2.0.0 +^35161668d986d83c46cdcf870cfc549431db9f8f +234002ad1c58e04b4e74853c7f1698874f69da60 refs/tags/v3.0.0 +^1ff32085b2b30956fbab58b1520d84d95f18d48d +c628645dfa7c4fc16acfb7a73c9d7a98697b472c refs/tags/v3.1.0 +^7bdb7ca33c9cc6440a600202b50142f401b6fe21 diff --git a/dot_tmux/plugins/tpm/dot_git/refs/heads/master b/dot_tmux/plugins/tpm/dot_git/refs/heads/master new file mode 100644 index 0000000..e69d6dc --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/refs/heads/master @@ -0,0 +1 @@ +99469c4a9b1ccf77fade25842dc7bafbc8ce9946 diff --git a/dot_tmux/plugins/tpm/dot_git/refs/remotes/origin/HEAD b/dot_tmux/plugins/tpm/dot_git/refs/remotes/origin/HEAD new file mode 100644 index 0000000..6efe28f --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_git/refs/remotes/origin/HEAD @@ -0,0 +1 @@ +ref: refs/remotes/origin/master diff --git a/dot_tmux/plugins/tpm/dot_git/refs/tags/.keep b/dot_tmux/plugins/tpm/dot_git/refs/tags/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_tmux/plugins/tpm/dot_gitattributes b/dot_tmux/plugins/tpm/dot_gitattributes new file mode 100644 index 0000000..80772e4 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_gitattributes @@ -0,0 +1,9 @@ +# Force text files to have unix eols, so Windows/Cygwin does not break them +*.* eol=lf + +# These files are unfortunately not recognized as text files so +# explicitly listing them here +tpm eol=lf +bin/* eol=lf +bindings/* eol=lf +tests/* eol=lf diff --git a/dot_tmux/plugins/tpm/dot_gitignore b/dot_tmux/plugins/tpm/dot_gitignore new file mode 100644 index 0000000..8a94156 --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_gitignore @@ -0,0 +1,4 @@ +**/.vagrant/ +run_tests +tests/run_tests_in_isolation +tests/helpers/helpers.sh diff --git a/dot_tmux/plugins/tpm/dot_gitmodules b/dot_tmux/plugins/tpm/dot_gitmodules new file mode 100644 index 0000000..5e44e3c --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/tmux-test"] + path = lib/tmux-test + url = https://github.com/tmux-plugins/tmux-test.git diff --git a/dot_tmux/plugins/tpm/dot_travis.yml b/dot_tmux/plugins/tpm/dot_travis.yml new file mode 100644 index 0000000..ac45d8b --- /dev/null +++ b/dot_tmux/plugins/tpm/dot_travis.yml @@ -0,0 +1,19 @@ +# generic packages and tmux +before_install: + - sudo apt-get update + - sudo apt-get install -y git-core expect + - sudo apt-get install -y python-software-properties software-properties-common + - sudo apt-get install -y libevent-dev libncurses-dev + - git clone https://github.com/tmux/tmux.git + - cd tmux + - git checkout 2.0 + - sh autogen.sh + - ./configure && make && sudo make install + +install: + - git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules + # manual `git clone` required for testing `tmux-test` plugin itself + - git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test; true + - lib/tmux-test/setup + +script: ./tests/run_tests_in_isolation diff --git a/dot_tmux/plugins/tpm/executable_tpm b/dot_tmux/plugins/tpm/executable_tpm new file mode 100644 index 0000000..7ad4b99 --- /dev/null +++ b/dot_tmux/plugins/tpm/executable_tpm @@ -0,0 +1,81 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +BINDINGS_DIR="$CURRENT_DIR/bindings" +SCRIPTS_DIR="$CURRENT_DIR/scripts" + +source "$SCRIPTS_DIR/variables.sh" + +get_tmux_option() { + local option="$1" + local default_value="$2" + local option_value="$(tmux show-option -gqv "$option")" + if [ -z "$option_value" ]; then + echo "$default_value" + else + echo "$option_value" + fi +} + +tpm_path_set() { + tmux show-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" >/dev/null 2>&1 +} + +# Check if configuration file exists at an XDG-compatible location, if so use +# that directory for TMUX_PLUGIN_MANAGER_PATH. Otherwise use $DEFAULT_TPM_PATH. +set_default_tpm_path() { + local xdg_tmux_path="${XDG_CONFIG_HOME:-$HOME/.config}/tmux" + local tpm_path="$DEFAULT_TPM_PATH" + + if [ -f "$xdg_tmux_path/tmux.conf" ]; then + tpm_path="$xdg_tmux_path/plugins/" + fi + + tmux set-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" "$tpm_path" +} + +# Ensures TMUX_PLUGIN_MANAGER_PATH global env variable is set. +# +# Put this in `.tmux.conf` to override the default: +# `set-environment -g TMUX_PLUGIN_MANAGER_PATH "/some/other/path/"` +set_tpm_path() { + if ! tpm_path_set; then + set_default_tpm_path + fi +} + +# 1. Fetches plugin names from `@plugin` variables +# 2. Creates full plugin path +# 3. Sources all *.tmux files from each of the plugin directories +# - no errors raised if directory does not exist +# Files are sourced as tmux config files, not as shell scripts! +source_plugins() { + "$SCRIPTS_DIR/source_plugins.sh" >/dev/null 2>&1 +} + +# prefix + I - downloads TPM plugins and reloads TMUX environment +# prefix + U - updates a plugin (or all of them) and reloads TMUX environment +# prefix + alt + u - remove unused TPM plugins and reloads TMUX environment +set_tpm_key_bindings() { + local install_key="$(get_tmux_option "$install_key_option" "$default_install_key")" + tmux bind-key "$install_key" run-shell "$BINDINGS_DIR/install_plugins" + + local update_key="$(get_tmux_option "$update_key_option" "$default_update_key")" + tmux bind-key "$update_key" run-shell "$BINDINGS_DIR/update_plugins" + + local clean_key="$(get_tmux_option "$clean_key_option" "$default_clean_key")" + tmux bind-key "$clean_key" run-shell "$BINDINGS_DIR/clean_plugins" +} + +supported_tmux_version_ok() { + "$SCRIPTS_DIR/check_tmux_version.sh" "$SUPPORTED_TMUX_VERSION" +} + +main() { + if supported_tmux_version_ok; then + set_tpm_path + set_tpm_key_bindings + source_plugins + fi +} +main diff --git a/dot_tmux/plugins/tpm/lib/tmux-test/.keep b/dot_tmux/plugins/tpm/lib/tmux-test/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_tmux/plugins/tpm/scripts/executable_check_tmux_version.sh b/dot_tmux/plugins/tpm/scripts/executable_check_tmux_version.sh new file mode 100644 index 0000000..b0aedec --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/executable_check_tmux_version.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +VERSION="$1" +UNSUPPORTED_MSG="$2" + +get_tmux_option() { + local option=$1 + local default_value=$2 + local option_value=$(tmux show-option -gqv "$option") + if [ -z "$option_value" ]; then + echo "$default_value" + else + echo "$option_value" + fi +} + +# Ensures a message is displayed for 5 seconds in tmux prompt. +# Does not override the 'display-time' tmux option. +display_message() { + local message="$1" + + # display_duration defaults to 5 seconds, if not passed as an argument + if [ "$#" -eq 2 ]; then + local display_duration="$2" + else + local display_duration="5000" + fi + + # saves user-set 'display-time' option + local saved_display_time=$(get_tmux_option "display-time" "750") + + # sets message display time to 5 seconds + tmux set-option -gq display-time "$display_duration" + + # displays message + tmux display-message "$message" + + # restores original 'display-time' value + tmux set-option -gq display-time "$saved_display_time" +} + +# this is used to get "clean" integer version number. Examples: +# `tmux 1.9` => `19` +# `1.9a` => `19` +get_digits_from_string() { + local string="$1" + local only_digits="$(echo "$string" | tr -dC '[:digit:]')" + echo "$only_digits" +} + +tmux_version_int() { + local tmux_version_string=$(tmux -V) + echo "$(get_digits_from_string "$tmux_version_string")" +} + +unsupported_version_message() { + if [ -n "$UNSUPPORTED_MSG" ]; then + echo "$UNSUPPORTED_MSG" + else + echo "Error, Tmux version unsupported! Please install Tmux version $VERSION or greater!" + fi +} + +exit_if_unsupported_version() { + local current_version="$1" + local supported_version="$2" + if [ "$current_version" -lt "$supported_version" ]; then + display_message "$(unsupported_version_message)" + exit 1 + fi +} + +main() { + local supported_version_int="$(get_digits_from_string "$VERSION")" + local current_version_int="$(tmux_version_int)" + exit_if_unsupported_version "$current_version_int" "$supported_version_int" +} +main diff --git a/dot_tmux/plugins/tpm/scripts/executable_clean_plugins.sh b/dot_tmux/plugins/tpm/scripts/executable_clean_plugins.sh new file mode 100644 index 0000000..a025524 --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/executable_clean_plugins.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/utility.sh" + +if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions + source "$HELPERS_DIR/tmux_echo_functions.sh" +else # shell output functions + source "$HELPERS_DIR/shell_echo_functions.sh" +fi + +clean_plugins() { + local plugins plugin plugin_directory + plugins="$(tpm_plugins_list_helper)" + + for plugin_directory in "$(tpm_path)"/*; do + [ -d "${plugin_directory}" ] || continue + plugin="$(plugin_name_helper "${plugin_directory}")" + case "${plugins}" in + *"${plugin}"*) : ;; + *) + [ "${plugin}" = "tpm" ] && continue + echo_ok "Removing \"$plugin\"" + rm -rf "${plugin_directory}" >/dev/null 2>&1 + [ -d "${plugin_directory}" ] && + echo_err " \"$plugin\" clean fail" || + echo_ok " \"$plugin\" clean success" + ;; + esac + done +} + +main() { + ensure_tpm_path_exists + clean_plugins + exit_value_helper +} +main diff --git a/dot_tmux/plugins/tpm/scripts/executable_install_plugins.sh b/dot_tmux/plugins/tpm/scripts/executable_install_plugins.sh new file mode 100644 index 0000000..e2450ac --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/executable_install_plugins.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/utility.sh" + +if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions + source "$HELPERS_DIR/tmux_echo_functions.sh" +else # shell output functions + source "$HELPERS_DIR/shell_echo_functions.sh" +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 +} + +# tries cloning: +# 1. plugin name directly - works if it's a valid git url +# 2. expands the plugin name to point to a GitHub repo and tries cloning again +clone_plugin() { + local plugin="$1" + local branch="$2" + clone "$plugin" "$branch" || + clone "https://git::@github.com/$plugin" "$branch" +} + +# clone plugin and produce output +install_plugin() { + local plugin="$1" + local branch="$2" + local plugin_name="$(plugin_name_helper "$plugin")" + + if plugin_already_installed "$plugin"; then + echo_ok "Already installed \"$plugin_name\"" + else + echo_ok "Installing \"$plugin_name\"" + clone_plugin "$plugin" "$branch" && + echo_ok " \"$plugin_name\" download success" || + echo_err " \"$plugin_name\" download fail" + fi +} + +install_plugins() { + local plugins="$(tpm_plugins_list_helper)" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + install_plugin "${plugin[0]}" "${plugin[1]}" + done +} + +verify_tpm_path_permissions() { + local path="$(tpm_path)" + # check the write permission flag for all users to ensure + # that we have proper access + [ -w "$path" ] || + echo_err "$path is not writable!" +} + +main() { + ensure_tpm_path_exists + verify_tpm_path_permissions + install_plugins + exit_value_helper +} +main diff --git a/dot_tmux/plugins/tpm/scripts/executable_source_plugins.sh b/dot_tmux/plugins/tpm/scripts/executable_source_plugins.sh new file mode 100644 index 0000000..6381d54 --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/executable_source_plugins.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" + +plugin_dir_exists() { + [ -d "$1" ] +} + +# Runs all *.tmux files from the plugin directory. +# Files are ran as executables. +# No errors if the plugin dir does not exist. +silently_source_all_tmux_files() { + local plugin_path="$1" + local plugin_tmux_files="$plugin_path*.tmux" + if plugin_dir_exists "$plugin_path"; then + for tmux_file in $plugin_tmux_files; do + # if the glob didn't find any files this will be the + # unexpanded glob which obviously doesn't exist + [ -f "$tmux_file" ] || continue + # runs *.tmux file as an executable + $tmux_file >/dev/null 2>&1 + done + fi +} + +source_plugins() { + local plugin plugin_path + local plugins="$(tpm_plugins_list_helper)" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + plugin_path="$(plugin_path_helper "${plugin[0]}")" + silently_source_all_tmux_files "$plugin_path" + done +} + +main() { + source_plugins +} +main diff --git a/dot_tmux/plugins/tpm/scripts/executable_update_plugin.sh b/dot_tmux/plugins/tpm/scripts/executable_update_plugin.sh new file mode 100644 index 0000000..e533664 --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/executable_update_plugin.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# this script handles core logic of updating plugins + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +source "$HELPERS_DIR/plugin_functions.sh" +source "$HELPERS_DIR/utility.sh" + +if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions + source "$HELPERS_DIR/tmux_echo_functions.sh" +else # shell output functions + source "$HELPERS_DIR/shell_echo_functions.sh" +fi + +# from now on ignore first script argument +shift + +pull_changes() { + local plugin="$1" + local plugin_path="$(plugin_path_helper "$plugin")" + cd "$plugin_path" && + GIT_TERMINAL_PROMPT=0 git pull && + GIT_TERMINAL_PROMPT=0 git submodule update --init --recursive +} + +update() { + local plugin="$1" output + output=$(pull_changes "$plugin" 2>&1) + if (( $? == 0 )); then + echo_ok " \"$plugin\" update success" + echo_ok "$(echo "$output" | sed -e 's/^/ | /')" + else + echo_err " \"$plugin\" update fail" + echo_err "$(echo "$output" | sed -e 's/^/ | /')" + fi +} + +update_all() { + echo_ok "Updating all plugins!" + echo_ok "" + local plugins="$(tpm_plugins_list_helper)" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + local plugin_name="$(plugin_name_helper "${plugin[0]}")" + # updating only installed plugins + if plugin_already_installed "$plugin_name"; then + update "$plugin_name" & + fi + done + wait +} + +update_plugins() { + local plugins="$*" + for plugin in $plugins; do + IFS='#' read -ra plugin <<< "$plugin" + local plugin_name="$(plugin_name_helper "${plugin[0]}")" + if plugin_already_installed "$plugin_name"; then + update "$plugin_name" & + else + echo_err "$plugin_name not installed!" & + fi + done + wait +} + +main() { + ensure_tpm_path_exists + if [ "$1" == "all" ]; then + update_all + else + update_plugins "$*" + fi + exit_value_helper +} +main "$*" diff --git a/dot_tmux/plugins/tpm/scripts/executable_update_plugin_prompt_handler.sh b/dot_tmux/plugins/tpm/scripts/executable_update_plugin_prompt_handler.sh new file mode 100644 index 0000000..5e1f7d9 --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/executable_update_plugin_prompt_handler.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +HELPERS_DIR="$CURRENT_DIR/helpers" + +if [ $# -eq 0 ]; then + exit 0 +fi + +source "$HELPERS_DIR/tmux_echo_functions.sh" +source "$HELPERS_DIR/tmux_utils.sh" + +main() { + "$CURRENT_DIR/update_plugin.sh" --tmux-echo "$*" + reload_tmux_environment + end_message +} +main "$*" diff --git a/dot_tmux/plugins/tpm/scripts/helpers/plugin_functions.sh b/dot_tmux/plugins/tpm/scripts/helpers/plugin_functions.sh new file mode 100644 index 0000000..f33d215 --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/helpers/plugin_functions.sh @@ -0,0 +1,104 @@ +# using @tpm_plugins is now deprecated in favor of using @plugin syntax +tpm_plugins_variable_name="@tpm_plugins" + +# manually expanding tilde char or `$HOME` variable. +_manual_expansion() { + local path="$1" + local expanded_tilde="${path/#\~/$HOME}" + echo "${expanded_tilde/#\$HOME/$HOME}" +} + +_tpm_path() { + local string_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)/" + _manual_expansion "$string_path" +} + +_CACHED_TPM_PATH="$(_tpm_path)" + +# Get the absolute path to the users configuration file of TMux. +# This includes a prioritized search on different locations. +# +_get_user_tmux_conf() { + # Define the different possible locations. + xdg_location="${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf" + default_location="$HOME/.tmux.conf" + + # Search for the correct configuration file by priority. + if [ -f "$xdg_location" ]; then + echo "$xdg_location" + + else + echo "$default_location" + fi +} + +_tmux_conf_contents() { + user_config=$(_get_user_tmux_conf) + cat /etc/tmux.conf "$user_config" 2>/dev/null + if [ "$1" == "full" ]; then # also output content from sourced files + local file + for file in $(_sourced_files); do + cat $(_manual_expansion "$file") 2>/dev/null + done + fi +} + +# return files sourced from tmux config files +_sourced_files() { + _tmux_conf_contents | + sed -E -n -e "s/^[[:space:]]*source(-file)?[[:space:]]+(-q+[[:space:]]+)?['\"]?([^'\"]+)['\"]?/\3/p" +} + +# Want to be able to abort in certain cases +trap "exit 1" TERM +export TOP_PID=$$ + +_fatal_error_abort() { + echo >&2 "Aborting." + kill -s TERM $TOP_PID +} + +# PUBLIC FUNCTIONS BELOW + +tpm_path() { + if [ "$_CACHED_TPM_PATH" == "/" ]; then + echo >&2 "FATAL: Tmux Plugin Manager not configured in tmux.conf" + _fatal_error_abort + fi + echo "$_CACHED_TPM_PATH" +} + +tpm_plugins_list_helper() { + # lists plugins from @tpm_plugins option + echo "$(tmux start-server\; show-option -gqv "$tpm_plugins_variable_name")" + + # read set -g @plugin "tmux-plugins/tmux-example-plugin" entries + _tmux_conf_contents "full" | + awk '/^[ \t]*set(-option)? +-g +@plugin/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $4 }' +} + +# Allowed plugin name formats: +# 1. "git://github.com/user/plugin_name.git" +# 2. "user/plugin_name" +plugin_name_helper() { + local plugin="$1" + # get only the part after the last slash, e.g. "plugin_name.git" + local plugin_basename="$(basename "$plugin")" + # remove ".git" extension (if it exists) to get only "plugin_name" + local plugin_name="${plugin_basename%.git}" + echo "$plugin_name" +} + +plugin_path_helper() { + local plugin="$1" + local plugin_name="$(plugin_name_helper "$plugin")" + echo "$(tpm_path)${plugin_name}/" +} + +plugin_already_installed() { + local plugin="$1" + local plugin_path="$(plugin_path_helper "$plugin")" + [ -d "$plugin_path" ] && + cd "$plugin_path" && + git remote >/dev/null 2>&1 +} diff --git a/dot_tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh b/dot_tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh new file mode 100644 index 0000000..ecaa37e --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh @@ -0,0 +1,7 @@ +echo_ok() { + echo "$*" +} + +echo_err() { + fail_helper "$*" +} diff --git a/dot_tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh b/dot_tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh new file mode 100644 index 0000000..7a6ef0a --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh @@ -0,0 +1,28 @@ +_has_emacs_mode_keys() { + $(tmux show -gw mode-keys | grep -q emacs) +} + +tmux_echo() { + local message="$1" + tmux run-shell "echo '$message'" +} + +echo_ok() { + tmux_echo "$*" +} + +echo_err() { + tmux_echo "$*" +} + +end_message() { + if _has_emacs_mode_keys; then + local continue_key="ESCAPE" + else + local continue_key="ENTER" + fi + tmux_echo "" + tmux_echo "TMUX environment reloaded." + tmux_echo "" + tmux_echo "Done, press $continue_key to continue." +} diff --git a/dot_tmux/plugins/tpm/scripts/helpers/tmux_utils.sh b/dot_tmux/plugins/tpm/scripts/helpers/tmux_utils.sh new file mode 100644 index 0000000..238952d --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/helpers/tmux_utils.sh @@ -0,0 +1,6 @@ +HELPERS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source "$HELPERS_DIR/plugin_functions.sh" + +reload_tmux_environment() { + tmux source-file $(_get_user_tmux_conf) >/dev/null 2>&1 +} diff --git a/dot_tmux/plugins/tpm/scripts/helpers/utility.sh b/dot_tmux/plugins/tpm/scripts/helpers/utility.sh new file mode 100644 index 0000000..de6eb35 --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/helpers/utility.sh @@ -0,0 +1,17 @@ +ensure_tpm_path_exists() { + mkdir -p "$(tpm_path)" +} + +fail_helper() { + local message="$1" + echo "$message" >&2 + FAIL="true" +} + +exit_value_helper() { + if [ "$FAIL" == "true" ]; then + exit 1 + else + exit 0 + fi +} diff --git a/dot_tmux/plugins/tpm/scripts/variables.sh b/dot_tmux/plugins/tpm/scripts/variables.sh new file mode 100644 index 0000000..5601a86 --- /dev/null +++ b/dot_tmux/plugins/tpm/scripts/variables.sh @@ -0,0 +1,13 @@ +install_key_option="@tpm-install" +default_install_key="I" + +update_key_option="@tpm-update" +default_update_key="U" + +clean_key_option="@tpm-clean" +default_clean_key="M-u" + +SUPPORTED_TMUX_VERSION="1.9" + +DEFAULT_TPM_ENV_VAR_NAME="TMUX_PLUGIN_MANAGER_PATH" +DEFAULT_TPM_PATH="$HOME/.tmux/plugins/" diff --git a/dot_tmux/plugins/tpm/tests/executable_expect_failed_plugin_download b/dot_tmux/plugins/tpm/tests/executable_expect_failed_plugin_download new file mode 100644 index 0000000..b970477 --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_expect_failed_plugin_download @@ -0,0 +1,36 @@ +#!/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 + I +send "I" + +# cloning might take a while +set timeout 20 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installing \"non-existing-plugin\"" +} + +expect { + "\"non-existing-plugin\" download fail" +} + +expect { + "Done, press ENTER to continue" { + exit 0 + } +} + +exit 1 diff --git a/dot_tmux/plugins/tpm/tests/executable_expect_successful_clean_plugins b/dot_tmux/plugins/tpm/tests/executable_expect_successful_clean_plugins new file mode 100644 index 0000000..987c49d --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_expect_successful_clean_plugins @@ -0,0 +1,35 @@ +#!/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_after { + timeout { exit 1 } +} + +expect { + "Removing \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" clean success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dot_tmux/plugins/tpm/tests/executable_expect_successful_multiple_plugins_download b/dot_tmux/plugins/tpm/tests/executable_expect_successful_multiple_plugins_download new file mode 100644 index 0000000..cc87a26 --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_expect_successful_multiple_plugins_download @@ -0,0 +1,44 @@ +#!/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 + I +send "I" + +# cloning might take a while +set timeout 15 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installing \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" download success" +} + +expect { + "Installing \"tmux-copycat\"" +} + +expect { + "\"tmux-copycat\" download success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dot_tmux/plugins/tpm/tests/executable_expect_successful_plugin_download b/dot_tmux/plugins/tpm/tests/executable_expect_successful_plugin_download new file mode 100644 index 0000000..388f05d --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_expect_successful_plugin_download @@ -0,0 +1,50 @@ +#!/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 + I +send "I" + +# cloning might take a while +set timeout 15 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installing \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" download success" +} + +expect { + "Done, press ENTER to continue" { + send " " + } +} + +sleep 1 +# this is tmux prefix + I +send "I" + +expect { + "Already installed \"tmux-example-plugin\"" +} + +expect { + "Done, press ENTER to continue" { + exit 0 + } +} + +exit 1 diff --git a/dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_a_single_plugin b/dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_a_single_plugin new file mode 100644 index 0000000..bcd64fe --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_a_single_plugin @@ -0,0 +1,55 @@ +#!/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 + U +send "U" + +set timeout 15 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installed plugins" +} + +expect { + "tmux-example-plugin" +} + +expect { + "\"all\" - updates all plugins" +} + +expect { + "ENTER - cancels" +} + +# wait for tmux to display prompt before sending characters +sleep 1 +send "tmux-example-plugin\r" + +expect { + "Updating \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" update success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_all_plugins b/dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_all_plugins new file mode 100644 index 0000000..4f3a4a3 --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_expect_successful_update_of_all_plugins @@ -0,0 +1,59 @@ +#!/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 + U +send "U" + +set timeout 5 + +expect_after { + timeout { exit 1 } +} + +expect { + "Installed plugins" +} + +expect { + "tmux-example-plugin" +} + +expect { + "\"all\" - updates all plugins" +} + +expect { + "ENTER - cancels" +} + +# wait for tmux to display prompt before sending characters +sleep 1 +send "all\r" + +expect { + "Updating all plugins!" +} + +expect { + "Updating \"tmux-example-plugin\"" +} + +expect { + "\"tmux-example-plugin\" update success" +} + +expect { + "Done, press ENTER to continue." { + exit 0 + } +} + +exit 1 diff --git a/dot_tmux/plugins/tpm/tests/executable_test_plugin_clean.sh b/dot_tmux/plugins/tpm/tests/executable_test_plugin_clean.sh new file mode 100644 index 0000000..d36c468 --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_test_plugin_clean.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TPM_DIR="$PWD" +PLUGINS_DIR="$HOME/.tmux/plugins" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +manually_install_the_plugin() { + rm -rf "$PLUGINS_DIR" + mkdir -p "$PLUGINS_DIR" + cd "$PLUGINS_DIR" + git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin +} + +# TMUX KEY-BINDING TESTS + +test_plugin_uninstallation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + "$CURRENT_DIR/expect_successful_clean_plugins" || + fail_helper "[key-binding] clean fails" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_uninstallation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean success' || + fail_helper "[script] plugin cleaning fails" + + teardown_helper +} + +test_unsuccessful_plugin_uninstallation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + chmod 000 "$PLUGINS_DIR/tmux-example-plugin" # disable directory deletion + + local expected_exit_code=1 + script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean fail' "$expected_exit_code" || + fail_helper "[script] unsuccessful plugin cleaning doesn't fail" + + chmod 755 "$PLUGINS_DIR/tmux-example-plugin" # enable directory deletion + + teardown_helper +} + +run_tests diff --git a/dot_tmux/plugins/tpm/tests/executable_test_plugin_installation.sh b/dot_tmux/plugins/tpm/tests/executable_test_plugin_installation.sh new file mode 100644 index 0000000..94fb674 --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_test_plugin_installation.sh @@ -0,0 +1,284 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PLUGINS_DIR="$HOME/.tmux/plugins" +TPM_DIR="$PWD" + +CUSTOM_PLUGINS_DIR="$HOME/foo/plugins" +ADDITIONAL_CONFIG_FILE_1="$HOME/.tmux/additional_config_file_1" +ADDITIONAL_CONFIG_FILE_2="$HOME/.tmux/additional_config_file_2" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +# TMUX KEY-BINDING TESTS + +test_plugin_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_plugin_download" || + fail_helper "[key-binding] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails" + + teardown_helper +} + +test_plugin_installation_via_tmux_key_binding_set_option() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-option -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_plugin_download" || + fail_helper "[key-binding][set-option] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][set-option] plugin download fails" + + teardown_helper +} + +test_plugin_installation_custom_dir_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' + + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_plugin_download" || + fail_helper "[key-binding][custom dir] plugin installation fails" + + check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][custom dir] plugin download fails" + + teardown_helper + rm -rf "$CUSTOM_PLUGINS_DIR" +} + +test_non_existing_plugin_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/non-existing-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_failed_plugin_download" || + fail_helper "[key-binding] non existing plugin installation doesn't fail" + + teardown_helper +} + +test_multiple_plugins_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + \ \ set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + "$CURRENT_DIR/expect_successful_multiple_plugins_download" || + fail_helper "[key-binding] multiple plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding] plugin download fails (tmux-copycat)" + + teardown_helper +} + +test_plugins_installation_from_sourced_file_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + source '$ADDITIONAL_CONFIG_FILE_1' + set -g @plugin 'tmux-plugins/tmux-example-plugin' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" + + "$CURRENT_DIR/expect_successful_multiple_plugins_download" || + fail_helper "[key-binding][sourced file] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][sourced file] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding][sourced file] plugin download fails (tmux-copycat)" + + teardown_helper +} + +test_plugins_installation_from_multiple_sourced_files_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + \ \ source '$ADDITIONAL_CONFIG_FILE_1' + source-file '$ADDITIONAL_CONFIG_FILE_2' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo "set -g @plugin 'tmux-plugins/tmux-example-plugin'" > "$ADDITIONAL_CONFIG_FILE_1" + echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_2" + + "$CURRENT_DIR/expect_successful_multiple_plugins_download" || + fail_helper "[key-binding][multiple sourced files] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-copycat)" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || + fail_helper "[script] plugin already installed message fail" + + teardown_helper +} + +test_plugin_installation_custom_dir_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' + + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script][custom dir] plugin installation fails" + + check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script][custom dir] plugin download fails" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || + fail_helper "[script][custom dir] plugin already installed message fail" + + teardown_helper + rm -rf "$CUSTOM_PLUGINS_DIR" +} + +test_non_existing_plugin_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/non-existing-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + local expected_exit_code=1 + script_run_helper "$TPM_DIR/bin/install_plugins" '"non-existing-plugin" download fail' "$expected_exit_code" || + fail_helper "[script] non existing plugin installation doesn't fail" + + teardown_helper +} + +test_multiple_plugins_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + \ \ set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] multiple plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script] plugin download fails (tmux-copycat)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || + fail_helper "[script] multiple plugins already installed message fail" + + teardown_helper +} + +test_plugins_installation_from_sourced_file_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + source '$ADDITIONAL_CONFIG_FILE_1' + set -g @plugin 'tmux-plugins/tmux-example-plugin' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-copycat" download success' || + fail_helper "[script][sourced file] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script][sourced file] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script][sourced file] plugin download fails (tmux-copycat)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || + fail_helper "[script][sourced file] plugins already installed message fail" + + teardown_helper +} + +test_plugins_installation_from_multiple_sourced_files_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + \ \ source '$ADDITIONAL_CONFIG_FILE_1' + source-file '$ADDITIONAL_CONFIG_FILE_2' + set -g @plugin 'tmux-plugins/tmux-example-plugin' + run-shell "$TPM_DIR/tpm" + HERE + + mkdir ~/.tmux + echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1" + echo "set -g @plugin 'tmux-plugins/tmux-sensible'" > "$ADDITIONAL_CONFIG_FILE_2" + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-sensible" download success' || + fail_helper "[script][multiple sourced files] plugins installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script][multiple sourced files] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script][multiple sourced files] plugin download fails (tmux-copycat)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-sensible/" || + fail_helper "[script][multiple sourced files] plugin download fails (tmux-sensible)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-sensible"' || + fail_helper "[script][multiple sourced files] plugins already installed message fail" + + teardown_helper +} + +run_tests diff --git a/dot_tmux/plugins/tpm/tests/executable_test_plugin_installation_legacy.sh b/dot_tmux/plugins/tpm/tests/executable_test_plugin_installation_legacy.sh new file mode 100644 index 0000000..b1d0cf6 --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_test_plugin_installation_legacy.sh @@ -0,0 +1,100 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +PLUGINS_DIR="$HOME/.tmux/plugins" +TPM_DIR="$PWD" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +# TMUX KEY-BINDING TESTS + +test_plugin_installation_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + # opens tmux and test it with `expect` + $CURRENT_DIR/expect_successful_plugin_download || + fail_helper "[key-binding] plugin installation fails" + + # check plugin dir exists after download + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails" + + teardown_helper +} + +test_legacy_and_new_syntax_for_plugin_installation_work_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins " \ + tmux-plugins/tmux-example-plugin \ + " + set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + # opens tmux and test it with `expect` + "$CURRENT_DIR"/expect_successful_multiple_plugins_download || + fail_helper "[key-binding] multiple plugins installation fails" + + # check plugin dir exists after download + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[key-binding] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[key-binding] plugin download fails (tmux-copycat)" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_installation_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' || + fail_helper "[script] plugin already installed message fail" + + teardown_helper +} + +test_legacy_and_new_syntax_for_plugin_installation_work_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @tpm_plugins " \ + tmux-plugins/tmux-example-plugin \ + " + set -g @plugin 'tmux-plugins/tmux-copycat' + run-shell "$TPM_DIR/tpm" + HERE + + script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' || + fail_helper "[script] multiple plugin installation fails" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" || + fail_helper "[script] plugin download fails (tmux-example-plugin)" + + check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" || + fail_helper "[script] plugin download fails (tmux-copycat)" + + script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' || + fail_helper "[script] multiple plugins already installed message fail" + + teardown_helper +} + +run_tests diff --git a/dot_tmux/plugins/tpm/tests/executable_test_plugin_sourcing.sh b/dot_tmux/plugins/tpm/tests/executable_test_plugin_sourcing.sh new file mode 100644 index 0000000..c06f1fe --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_test_plugin_sourcing.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TPM_DIR="$PWD" +PLUGINS_DIR="$HOME/.tmux/plugins" + +CUSTOM_PLUGINS_DIR="$HOME/foo/plugins" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +check_binding_defined() { + local binding="$1" + tmux list-keys | grep -q "$binding" +} + +create_test_plugin_helper() { + local plugin_path="$PLUGINS_DIR/tmux_test_plugin/" + rm -rf "$plugin_path" + mkdir -p "$plugin_path" + + while read line; do + echo "$line" >> "$plugin_path/test_plugin.tmux" + done + chmod +x "$plugin_path/test_plugin.tmux" +} + +check_tpm_path() { + local correct_tpm_path="$1" + local tpm_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)" + [ "$correct_tpm_path" == "$tpm_path" ] +} + +test_plugin_sourcing() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "doesnt_matter/tmux_test_plugin" + run-shell "$TPM_DIR/tpm" + HERE + + # manually creates a local tmux plugin + create_test_plugin_helper <<- HERE + tmux bind-key R run-shell foo_command + HERE + + tmux new-session -d # tmux starts detached + check_binding_defined "R run-shell foo_command" || + fail_helper "Plugin sourcing fails" + + teardown_helper +} + +test_default_tpm_path() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + run-shell "$TPM_DIR/tpm" + HERE + + check_tpm_path "${PLUGINS_DIR}/" || + fail_helper "Default TPM path not correct" + + teardown_helper +} + +test_custom_tpm_path() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR' + run-shell "$TPM_DIR/tpm" + HERE + + check_tpm_path "$CUSTOM_PLUGINS_DIR" || + fail_helper "Custom TPM path not correct" + + teardown_helper +} + +run_tests diff --git a/dot_tmux/plugins/tpm/tests/executable_test_plugin_update.sh b/dot_tmux/plugins/tpm/tests/executable_test_plugin_update.sh new file mode 100644 index 0000000..4924d16 --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/executable_test_plugin_update.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TPM_DIR="$PWD" +PLUGINS_DIR="$HOME/.tmux/plugins" + +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" + +manually_install_the_plugin() { + mkdir -p "$PLUGINS_DIR" + cd "$PLUGINS_DIR" + git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin +} + +# TMUX KEY-BINDING TESTS + +test_plugin_update_via_tmux_key_binding() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + "$CURRENT_DIR/expect_successful_update_of_all_plugins" || + fail_helper "[key-binding] 'update all plugins' fails" + + "$CURRENT_DIR/expect_successful_update_of_a_single_plugin" || + fail_helper "[key-binding] 'update single plugin' fails" + + teardown_helper +} + +# SCRIPT TESTS + +test_plugin_update_via_script() { + set_tmux_conf_helper <<- HERE + set -g mode-keys vi + set -g @plugin "tmux-plugins/tmux-example-plugin" + run-shell "$TPM_DIR/tpm" + HERE + + manually_install_the_plugin + + local expected_exit_code=1 + script_run_helper "$TPM_DIR/bin/update_plugins" 'usage' "$expected_exit_code" || + fail_helper "[script] running update plugins without args should fail" + + script_run_helper "$TPM_DIR/bin/update_plugins tmux-example-plugin" '"tmux-example-plugin" update success' || + fail_helper "[script] plugin update fails" + + script_run_helper "$TPM_DIR/bin/update_plugins all" '"tmux-example-plugin" update success' || + fail_helper "[script] update all plugins fails" + + teardown_helper +} + +run_tests diff --git a/dot_tmux/plugins/tpm/tests/helpers/tpm.sh b/dot_tmux/plugins/tpm/tests/helpers/tpm.sh new file mode 100644 index 0000000..1594afb --- /dev/null +++ b/dot_tmux/plugins/tpm/tests/helpers/tpm.sh @@ -0,0 +1,13 @@ +check_dir_exists_helper() { + [ -d "$1" ] +} + +# runs the scripts and asserts it has the correct output and exit code +script_run_helper() { + local script="$1" + local expected_output="$2" + local expected_exit_code="${3:-0}" + $script 2>&1 | + grep "$expected_output" >/dev/null 2>&1 && # grep -q flag quits the script early + [ "${PIPESTATUS[0]}" -eq "$expected_exit_code" ] +}