scripts/bash_completion.pl
author František Kučera <franta-hg@frantovo.cz>
Fri, 27 Dec 2013 17:51:05 +0100
branchv_0
changeset 81 847c83288d01
child 82 adea6d8d3708
permissions -rwxr-xr-x
bash completion: perl + bash + ant for generating completion script

#!/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
';