enhance remote execution

This commit is contained in:
Denis Lehmann 2021-05-03 23:56:36 +02:00
parent 6980d9ae5e
commit 8dffc3e6da

64
strm
View file

@ -30,20 +30,24 @@ function print_controls {
echo -ne "\n[${text_bold}p${text_reset}] Play/Pause, [${text_bold}<${text_reset}/${text_bold}>${text_reset}] Previous/Next, [${text_bold}q${text_reset}] Quit, [${text_bold}Q${text_reset}] Save position and quit\n" echo -ne "\n[${text_bold}p${text_reset}] Play/Pause, [${text_bold}<${text_reset}/${text_bold}>${text_reset}] Previous/Next, [${text_bold}q${text_reset}] Quit, [${text_bold}Q${text_reset}] Save position and quit\n"
} }
function print_remote_controls {
echo -ne "\n[${text_bold}p${text_reset}] Play/Pause, [${text_bold}<${text_reset}/${text_bold}>${text_reset}] Previous/Next, [${text_bold}q${text_reset}] Quit, [${text_bold}Q${text_reset}] Save position and quit, [${text_bold}C-b d${text_reset}] Detach from session\n"
}
function error { function error {
echo -ne "${text_bold}ERROR${text_reset} $1\n" >&2 echo -ne "${text_bold}ERROR${text_reset} $1\n" >&2
exit 1 exit 1
} }
# Check if mpv is installed # Check if mpv is installed
if ! command -v mpv &>/dev/null if ! command -v mpv &>/dev/null; then
then
error "mpv was not found, please install it" error "mpv was not found, please install it"
fi fi
# Set default values # Set default values
config="$HOME/.config/strm/strm.config" config="$HOME/.config/strm/strm.config"
fullscreen=false fullscreen=false
is_remote_call=false
list=false list=false
media_directories="" media_directories=""
or=false or=false
@ -71,6 +75,10 @@ while (( "$#" )); do
-h|--help) -h|--help)
print_usage print_usage
;; ;;
--is-remote-call)
is_remote_call=true
shift
;;
-l|--list) -l|--list)
list=true list=true
remote_arguments+=("$1") remote_arguments+=("$1")
@ -114,24 +122,42 @@ while (( "$#" )); do
esac esac
done done
# Print usage if no queries were given
if [ "${#queries[@]}" == 0 ]; then
print_usage
fi
# Execute strm on remote if argument set # Execute strm on remote if argument set
if [ "$remote" != "" ]; then if [ "$remote" != "" ]; then
# Invert fullscreen argument # Check if strm tmux session is already running
if [ "$fullscreen" == false ]; then if ssh "$remote" "tmux has-session -t strm &>/dev/null"; then
remote_arguments+=("-f")
fi
# Execute strm on remote machine # Attach to tmux session
ssh -t "$remote" "DISPLAY=:0 strm ${remote_arguments[@]}; echo" ssh -t "$remote" "tmux attach-session -t strm &>/dev/null"
else
# Print usage if no queries were given
if [ "${#queries[@]}" == 0 ]; then
echo -ne "No strm session running on ${text_bold}$remote${text_reset}, please provide a query"
exit
fi
# Invert fullscreen argument
if [ "$fullscreen" == false ]; then
remote_arguments+=("-f")
fi
# Notify strm about remote session
remote_arguments+=("--is-remote-call")
# Execute strm on remote machine
ssh -t "$remote" "DISPLAY=:0 tmux new-session -s strm strm ${remote_arguments[@]} &>/dev/null"
fi
exit exit
fi fi
# Print usage if no queries were given
if [ "${#queries[@]}" == 0 ]; then
print_usage
fi
# If no media directory was set load config file # If no media directory was set load config file
if [ "$media_directories" == "" ]; then if [ "$media_directories" == "" ]; then
@ -144,7 +170,7 @@ if [ "$media_directories" == "" ]; then
# Throws error if still no media directory set # Throws error if still no media directory set
if [ "$media_directories" == "" ]; then if [ "$media_directories" == "" ]; then
error "No media directory specified" error "No media directories specified"
fi fi
fi fi
@ -207,6 +233,10 @@ echo
# Exit if no results found # Exit if no results found
if [ "${#sftp_results[@]}" == 0 ]; then if [ "${#sftp_results[@]}" == 0 ]; then
echo "No files found" echo "No files found"
if [ "$is_remote_call" == true ]; then
echo "Press something to quit"
read -n 1
fi
exit exit
fi fi
@ -231,7 +261,11 @@ done
# Play results if --list flag not set # Play results if --list flag not set
if [ "$list" == false ]; then if [ "$list" == false ]; then
print_controls if [ "$is_remote_call" == true ]; then
print_remote_controls
else
print_controls
fi
# Construct addtitional mpv arguments # Construct addtitional mpv arguments
mpv_arguments=() mpv_arguments=()