Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
d7100267ce | |||
4c08363b7f | |||
d975e38ef3 | |||
a3c476ca20 |
35
s3h.sh
35
s3h.sh
@ -3,7 +3,7 @@
|
||||
# config
|
||||
DIALOG=dialog #gdialog kdialog
|
||||
START_DIR="$HOME/.s3h"
|
||||
VERSION="1.5"
|
||||
VERSION="1.7"
|
||||
|
||||
# TODO: use opt parsing
|
||||
if [[ $# -eq 1 && "$1" == "-v" ]]; then
|
||||
@ -15,7 +15,7 @@ if [[ $# -eq 1 && -d "$1" ]]; then
|
||||
START_DIR="$1"
|
||||
fi
|
||||
|
||||
START_DIR=`realpath "$START_DIR"`
|
||||
START_DIR=$(realpath "$START_DIR")
|
||||
|
||||
if [[ ! -d "$START_DIR" ]]; then
|
||||
echo "start directory '$START_DIR' does not exist" >&2
|
||||
@ -24,6 +24,19 @@ if [[ ! -d "$START_DIR" ]]; then
|
||||
exit 2
|
||||
fi
|
||||
|
||||
LAST="$START_DIR/.last"
|
||||
|
||||
# check if there was a last call, if so fake while loop variable
|
||||
preselect=''
|
||||
if [[ -f "$LAST" ]]; then
|
||||
last=$(cat "$LAST")
|
||||
# check if config file still exists
|
||||
if [[ -f "$last" ]]; then
|
||||
dir=$(dirname "$last")
|
||||
preselect=$(basename "$last")
|
||||
fi
|
||||
fi
|
||||
|
||||
# select config file
|
||||
configFile=''
|
||||
while [[ -z "$configFile" ]]; do
|
||||
@ -40,12 +53,12 @@ while [[ -z "$configFile" ]]; do
|
||||
fi
|
||||
|
||||
# add directory selectors
|
||||
dirs=`find $dir -mindepth 1 -maxdepth 1 ! -name '.*' -type d -printf "%f\n" |sort`
|
||||
dirs=$(find $dir -mindepth 1 -maxdepth 1 ! -name '.*' -type d -printf "%f\n" |sort)
|
||||
for d in $dirs; do
|
||||
para+=("$d" "<$d>")
|
||||
done
|
||||
# add file selectors
|
||||
files=`find $dir -mindepth 1 -maxdepth 1 ! -name '.*' -type f -printf "%f\n" |sort`
|
||||
files=$(find $dir -mindepth 1 -maxdepth 1 ! -name '.*' -type f -printf "%f\n" |sort)
|
||||
for d in $files; do
|
||||
# text before ~ is tag
|
||||
if [[ "$d" == *"~"* ]]; then
|
||||
@ -65,8 +78,13 @@ while [[ -z "$configFile" ]]; do
|
||||
fi
|
||||
|
||||
# run dialog
|
||||
ret=$("$DIALOG" --no-tags --stdout --menu "select connection" 0 0 0 ${para[@]} 2>&1)
|
||||
dialogOptions=''
|
||||
if [[ ! -z "$preselect" ]]; then
|
||||
dialogOptions="$dialogOptions --default-item $preselect"
|
||||
fi
|
||||
ret=$("$DIALOG" --no-tags --stdout $dialogOptions --menu "select connection" 0 0 0 ${para[@]} 2>&1)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
clear
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -79,7 +97,7 @@ while [[ -z "$configFile" ]]; do
|
||||
configFile=$ret
|
||||
fi
|
||||
else
|
||||
dir=`dirname "$dir"`
|
||||
dir=$(dirname "$dir")
|
||||
fi
|
||||
done
|
||||
|
||||
@ -103,8 +121,11 @@ if [[ -f "$configFile" ]]; then
|
||||
# clear screen // remove dialog colors
|
||||
echo "config file '$configFile' selected. connecting..."
|
||||
|
||||
# save selected configFile for next call of s3h
|
||||
echo "$configFile" > "$LAST"
|
||||
|
||||
# extract user@host if ~ in config file name
|
||||
login=`basename "$configFile"`
|
||||
login=$(basename "$configFile")
|
||||
if [[ "$login" == *"~"* ]]; then
|
||||
login="${login#*~}"
|
||||
fi
|
||||
|
Reference in New Issue
Block a user