Add parameters to every function and make the handling more generic
This commit is contained in:
		
							parent
							
								
									a0f2b61734
								
							
						
					
					
						commit
						6a0e2fd7d1
					
				
					 1 changed files with 32 additions and 23 deletions
				
			
		
							
								
								
									
										53
									
								
								ts-control
									
										
									
									
									
								
							
							
						
						
									
										53
									
								
								ts-control
									
										
									
									
									
								
							|  | @ -10,15 +10,8 @@ back | |||
| message | ||||
| message-user" | ||||
| 
 | ||||
| action="$1" | ||||
| if [ -n "$1" ]; then | ||||
| 	shift | ||||
| else | ||||
| 	action=$(echo "$actions" | $DMENU) | ||||
| fi | ||||
| 
 | ||||
| _ts_control_get_entity() { | ||||
| 	entity=$(teamspeak-query-lib "$1s" | $DMENU) | ||||
| 	entity=$(_ts_control_single_or_dmenu "$(teamspeak-query-lib "$1s")" "$2") | ||||
| 	if [ -z "$entity" ]; then | ||||
| 		exit 1 | ||||
| 	fi | ||||
|  | @ -26,39 +19,59 @@ _ts_control_get_entity() { | |||
| } | ||||
| 
 | ||||
| _ts_control_get_message() { | ||||
| 	if [ -n "$1" ]; | ||||
| 	then | ||||
| 		message="$1" | ||||
| 	else | ||||
| 		message=$(printf "\n" | $DMENU -p "message") | ||||
| 	fi | ||||
| 
 | ||||
| 	if [ -z "$message" ]; then | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 
 | ||||
| 	echo "$message" | ||||
| } | ||||
| 
 | ||||
| _ts_control_move_self() { | ||||
| 	channel=$(_ts_control_get_entity channel) | ||||
| 	channel=$(_ts_control_get_entity channel "$1" "$2") | ||||
| 	teamspeak-query-lib move --strict-channel "$channel" | ||||
| } | ||||
| 
 | ||||
| _ts_control_fetch() { | ||||
| 	target=$(_ts_control_get_entity "$1") | ||||
| 	target=$(_ts_control_get_entity "$1" "$2") | ||||
| 	teamspeak-query-lib fetch "--strict-$1" "--$1" "$target" | ||||
| } | ||||
| 
 | ||||
| _ts_control_single_or_dmenu() { | ||||
| 	options=$(echo "$1" | grep "$2") | ||||
| 	count=$(echo "$options" | wc -l) | ||||
| 	if [ "$count" -eq 1 ]; then | ||||
| 		echo "$options" | ||||
| 	else | ||||
| 		echo "$options" | $DMENU | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| # Add '$' to $1 to add 'End of line' to the regex for grep | ||||
| action=$(_ts_control_single_or_dmenu "$actions" "$1$") | ||||
| 
 | ||||
| case $action in | ||||
| 	"quick") | ||||
| 		action=$($DMENU < "$XDG_CONFIG_HOME/ts-control-quick") | ||||
| 		if [ -z "$action" ]; then | ||||
| 			exit 1 | ||||
| 		fi | ||||
| 		eval "teamspeak-query-lib $action" | ||||
| 		eval "$0 $action" | ||||
| 		;; | ||||
| 	"move") | ||||
| 		_ts_control_move_self | ||||
| 		_ts_control_move_self "$2" | ||||
| 		;; | ||||
| 	"fetch-client") | ||||
| 		_ts_control_fetch client | ||||
| 		_ts_control_fetch client "$2" | ||||
| 		;; | ||||
| 	"fetch-channel") | ||||
| 		_ts_control_fetch channel | ||||
| 		_ts_control_fetch channel "$2" | ||||
| 		;; | ||||
| 	"not away") | ||||
| 		teamspeak-query-lib move "Not Away From Keyboard" | ||||
|  | @ -72,20 +85,16 @@ case $action in | |||
| 		;; | ||||
| 	"back") | ||||
| 		teamspeak-query-lib update --back | ||||
| 		if [ -n "$1" ]; then | ||||
| 			teamspeak-query-lib move "$1" | ||||
| 		else | ||||
| 			_ts_control_move_self "$1" | ||||
| 		fi | ||||
| 		_ts_control_move_self "$2" | ||||
| 		teamspeak-query-lib update --microphone=true --speakers=true | ||||
| 		;; | ||||
| 	"message") | ||||
| 		message=$(_ts_control_get_message) | ||||
| 		message=$(_ts_control_get_message "$2") | ||||
| 		teamspeak-query-lib message "$message" | ||||
| 		;; | ||||
| 	"message-user") | ||||
| 		message=$(_ts_control_get_message) | ||||
| 		user=$(_ts_control_get_entity client) | ||||
| 		user=$(_ts_control_get_entity client "$2") | ||||
| 		message=$(_ts_control_get_message "$3") | ||||
| 		teamspeak-query-lib message --strict-client --client "$user" "$message" | ||||
| 		;; | ||||
| esac | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue