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
franta-hg@81
     1
#!/usr/bin/perl
franta-hg@81
     2
franta-hg@81
     3
# Parses Java source code from STDIN and generates script for BASH completion
franta-hg@81
     4
# Input (in this order):
franta-hg@81
     5
#	info/globalcode/sql/dk/Constants.java
franta-hg@81
     6
#	info/globalcode/sql/dk/formatting/*
franta-hg@81
     7
#	info/globalcode/sql/dk/CLIParser.java
franta-hg@81
     8
franta-hg@81
     9
use strict;
franta-hg@81
    10
use warnings;
franta-hg@81
    11
franta-hg@81
    12
my $configDir = "~";
franta-hg@81
    13
franta-hg@81
    14
while (<>) {
franta-hg@81
    15
	if (/"(.*?)".*? \/\/\s*bash-completion:dir/) {
franta-hg@81
    16
		$configDir .= "/$1";
franta-hg@81
    17
		last;
franta-hg@81
    18
	}
franta-hg@81
    19
}
franta-hg@81
    20
franta-hg@81
    21
print 'have sql-dk &&
franta-hg@81
    22
_sql_dk()
franta-hg@81
    23
{
franta-hg@81
    24
	local cur prev
franta-hg@81
    25
franta-hg@81
    26
	COMPREPLY=()
franta-hg@81
    27
	cur=${COMP_WORDS[COMP_CWORD]}
franta-hg@81
    28
	prev=${COMP_WORDS[COMP_CWORD-1]}
franta-hg@81
    29
franta-hg@81
    30
	case "$prev" in
franta-hg@81
    31
	--db)
franta-hg@81
    32
		COMPREPLY=( $( echo "TODO_DATABASE_NAMES" ) );
franta-hg@81
    33
		# ' . $configDir .'
franta-hg@81
    34
		return 0
franta-hg@81
    35
		;;
franta-hg@81
    36
	--formatter)
franta-hg@81
    37
		COMPREPLY=( $( compgen -W "
franta-hg@81
    38
';
franta-hg@81
    39
franta-hg@81
    40
while (<>) {
franta-hg@81
    41
	if (/"(.*?)".*? \/\/\s*bash-completion:formatter/) {
franta-hg@81
    42
		print "			$1\n";
franta-hg@81
    43
	}
franta-hg@81
    44
	last if (/\/\/\s*bash-completion:options/);
franta-hg@81
    45
}
franta-hg@81
    46
franta-hg@81
    47
franta-hg@81
    48
print '			" -- $cur ) );
franta-hg@81
    49
		return 0
franta-hg@81
    50
		;;
franta-hg@81
    51
	esac;
franta-hg@81
    52
franta-hg@81
    53
	COMPREPLY=( $( compgen -W "
franta-hg@81
    54
';
franta-hg@81
    55
franta-hg@81
    56
while (<>) {
franta-hg@81
    57
	if (/"(.*?)".*? \/\/\s*bash-completion:option/) {
franta-hg@81
    58
		print "			$1\n";
franta-hg@81
    59
	}
franta-hg@81
    60
}
franta-hg@81
    61
franta-hg@81
    62
print '		" -- $cur ) )
franta-hg@81
    63
	return 0
franta-hg@81
    64
franta-hg@81
    65
}
franta-hg@81
    66
franta-hg@81
    67
complete -F _sql_dk sql-dk
franta-hg@81
    68
';