scripts/bash_completion.pl
branchv_0
changeset 220 0bc544b38cfa
parent 209 8dfe037b3274
child 221 e38910065d55
--- a/scripts/bash_completion.pl	Sat Aug 15 16:15:30 2015 +0200
+++ b/scripts/bash_completion.pl	Sun Aug 16 01:25:01 2015 +0200
@@ -39,11 +39,38 @@
 
 my $databasesFile  = "$configDir/bash-completion/databases";
 my $formattersFile = "$configDir/bash-completion/formatters";
+my $formatterPropertiesDir = "$configDir/bash-completion/formatter-properties";
 
 print '#have sql-dk &&
-_sql_dk()
-{
-	local cur prev
+_sql_dk_bash_completion_find_formatter() {
+	local previous
+	for token in "$@"; do
+		if [ "x$previous" == "x--formatter" ]; then
+			echo -n "$token";
+		fi
+		previous="$token";
+	done
+}
+
+_sql_dk_bash_completion_formatter_property() {
+	if [ -n "$formatter" ]; then # TODO: this does not match formatter name in apostrophes or quotes
+		local formatter_dir='.$formatterPropertiesDir.'/$formatter
+		if [ -d  $formatter_dir ]; then
+			ls -1 $formatter_dir;
+		fi
+	fi
+}
+
+_sql_dk_bash_completion_formatter_property_choice() {
+	local property="${COMP_WORDS[COMP_CWORD-1]}";
+	echo true;
+	echo false;
+	echo "TODO_$property";
+	# TODO: find choices for the property  
+}
+
+_sql_dk_bash_completion() {
+	local cur prev formatter
 
 	COMPREPLY=()
 	cur=${COMP_WORDS[COMP_CWORD]}
@@ -75,7 +102,17 @@
 		fi
 		return 0
 		;;
+	--formatter-property)
+		formatter=$( _sql_dk_bash_completion_find_formatter "${COMP_WORDS[@]}" );
+		COMPREPLY=( $( compgen -W "$(_sql_dk_bash_completion_formatter_property )" -- $cur ) ); 
+		return 0;
+		;;
 	esac;
+	
+	if [ "x${COMP_WORDS[COMP_CWORD-2]}" == "x--formatter-property" ]; then
+		COMPREPLY=( $( compgen -W "$(_sql_dk_bash_completion_formatter_property_choice )" -- $cur ) ); 
+		return 0;
+	fi
 
 	COMPREPLY=( $( compgen -W "
 ';
@@ -91,5 +128,5 @@
 
 }
 
-complete -F _sql_dk sql-dk
+complete -F _sql_dk_bash_completion sql-dk
 ';