From 1dddbb502c689830cd8aeadbb85f2e537fa399cd Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Tue, 2 Jul 2013 23:04:35 +0200 Subject: [PATCH] Enable load commands to accept file paths in addition to layout names Resolves issue #20. Additionally, load_session now has an optional second argument to set the default session name. And error output from both load commands is now printed to STDERR and give a return code of 1 on error. --- lib/layout-helpers.sh | 36 +++++++++++++++++++++++++--------- libexec/tmuxifier-load-session | 2 +- libexec/tmuxifier-load-window | 2 +- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lib/layout-helpers.sh b/lib/layout-helpers.sh index 1989b5a..715db57 100644 --- a/lib/layout-helpers.sh +++ b/lib/layout-helpers.sh @@ -143,16 +143,21 @@ window_root() { # Load specified window layout. # # Arguments: -# - $1: Name of window layout to load. -# - $2: Override default window name. +# - $1: Name of or file path to window layout to load. +# - $2: (optional) Override default window name. # load_window() { - local file="$TMUXIFIER_LAYOUT_PATH/$1.window.sh" + local file="$1" + if [ ! -f "$file" ]; then + file="$TMUXIFIER_LAYOUT_PATH/$1.window.sh" + fi + if [ -f "$file" ]; then if [ $# -gt 1 ]; then window="$2" else - window="$1" + window="${1/%.window.sh}" + window="${window/%.sh}" fi source "$file" window= @@ -162,19 +167,31 @@ load_window() { window_root "$session_root" fi else - echo "No such window layout found '$1' in '$TMUXIFIER_LAYOUT_PATH'." + echo "\"$1\" window layout not found." >&2 + return 1 fi } # Load specified session layout. # # Arguments: -# - $1: Name of session layout to load. +# - $1: Name of or file path to session layout to load. +# - $2: (optional) Override default window name. # load_session() { - local file="$TMUXIFIER_LAYOUT_PATH/$1.session.sh" + local file="$1" + if [ ! -f "$file" ]; then + file="$TMUXIFIER_LAYOUT_PATH/$1.session.sh" + fi + if [ -f "$file" ]; then - session="$1" + if [ $# -gt 1 ]; then + session="$2" + else + session="${1/%.session.sh}" + session="${session/%.sh}" + fi + set_default_path=true source "$file" session= @@ -184,7 +201,8 @@ load_session() { session_root="$HOME" fi else - echo "No such session layout found '$1' in '$TMUXIFIER_LAYOUT_PATH'." + echo "\"$1\" session layout not found." >&2 + return 1 fi } diff --git a/libexec/tmuxifier-load-session b/libexec/tmuxifier-load-session index 37c9749..927a141 100755 --- a/libexec/tmuxifier-load-session +++ b/libexec/tmuxifier-load-session @@ -7,7 +7,7 @@ source "$TMUXIFIER/lib/util.sh" # Provide tmuxifier help if calling-help "$@"; then - echo "usage: tmuxifier load-session + echo "usage: tmuxifier load-session Aliases: session, ses, s diff --git a/libexec/tmuxifier-load-window b/libexec/tmuxifier-load-window index 7bdf369..d3cb9e0 100755 --- a/libexec/tmuxifier-load-window +++ b/libexec/tmuxifier-load-window @@ -7,7 +7,7 @@ source "$TMUXIFIER/lib/util.sh" # Provide tmuxifier help if calling-help "$@"; then - echo "usage: tmuxifier load-window + echo "usage: tmuxifier load-window Aliases: window, win, w