# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1388163065 -3600
# Node ID 847c83288d012b1b49a1e39b017a602e4d7d7c85
# Parent  c4635ab3a7af6cdbe993c3f3403235da0ec1d7e6
bash completion: perl + bash + ant for generating completion script

diff -r c4635ab3a7af -r 847c83288d01 java/sql-dk/bash-completion.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/sql-dk/bash-completion.sh	Fri Dec 27 17:51:05 2013 +0100
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+cat \
+	src/info/globalcode/sql/dk/Constants.java \
+	src/info/globalcode/sql/dk/formatting/* \
+	src/info/globalcode/sql/dk/CLIParser.java \
+	| ../../scripts/bash_completion.pl
+
diff -r c4635ab3a7af -r 847c83288d01 java/sql-dk/build.xml
--- a/java/sql-dk/build.xml	Fri Dec 27 17:40:27 2013 +0100
+++ b/java/sql-dk/build.xml	Fri Dec 27 17:51:05 2013 +0100
@@ -76,4 +76,8 @@
 		<exec executable="./version-info.sh" output="data/info/globalcode/sql/dk/version.txt"/>
 	</target>
 	
+	<target name="-post-jar">
+		<exec executable="./bash-completion.sh" output="dist/bash-completion.sh"/>
+	</target>
+	
 </project>
diff -r c4635ab3a7af -r 847c83288d01 scripts/bash_completion.pl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/bash_completion.pl	Fri Dec 27 17:51:05 2013 +0100
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+
+# Parses Java source code from STDIN and generates script for BASH completion
+# Input (in this order):
+#	info/globalcode/sql/dk/Constants.java
+#	info/globalcode/sql/dk/formatting/*
+#	info/globalcode/sql/dk/CLIParser.java
+
+use strict;
+use warnings;
+
+my $configDir = "~";
+
+while (<>) {
+	if (/"(.*?)".*? \/\/\s*bash-completion:dir/) {
+		$configDir .= "/$1";
+		last;
+	}
+}
+
+print 'have sql-dk &&
+_sql_dk()
+{
+	local cur prev
+
+	COMPREPLY=()
+	cur=${COMP_WORDS[COMP_CWORD]}
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case "$prev" in
+	--db)
+		COMPREPLY=( $( echo "TODO_DATABASE_NAMES" ) );
+		# ' . $configDir .'
+		return 0
+		;;
+	--formatter)
+		COMPREPLY=( $( compgen -W "
+';
+
+while (<>) {
+	if (/"(.*?)".*? \/\/\s*bash-completion:formatter/) {
+		print "			$1\n";
+	}
+	last if (/\/\/\s*bash-completion:options/);
+}
+
+
+print '			" -- $cur ) );
+		return 0
+		;;
+	esac;
+
+	COMPREPLY=( $( compgen -W "
+';
+
+while (<>) {
+	if (/"(.*?)".*? \/\/\s*bash-completion:option/) {
+		print "			$1\n";
+	}
+}
+
+print '		" -- $cur ) )
+	return 0
+
+}
+
+complete -F _sql_dk sql-dk
+';