Avoid reusing/rewriting the DB connection properties.
There was weird random errors while testing connection to multiple DB in parallel when one of them was meta connection to same DB connection.
Two kinds of exception: 1) missing password 2) „Passing DB password as CLI parameter is insecure!“
4 # Copyright © 2013 František Kučera (frantovo.cz)
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 # Parses Java source code from STDIN and generates script for BASH completion
21 # Input (in this order):
22 # info/globalcode/sql/dk/Constants.java
23 # info/globalcode/sql/dk/formatting/*
24 # info/globalcode/sql/dk/CLIParser.java
26 # TODO: support database/formatter names with spaces
34 if (/"(.*?)".*? \/\/\s*bash-completion:dir/) {
40 my $databasesFile = "$configDir/bash-completion/databases";
41 my $formattersFile = "$configDir/bash-completion/formatters";
42 my $defaultFormatterFile = "$configDir/bash-completion/default-formatter";
43 my $formatterPropertiesDir = "$configDir/bash-completion/formatter-properties";
45 print '#have sql-dk &&
46 _sql_dk_bash_completion_find_formatter() {
49 if [ "x$previous" == "x--formatter" ]; then
56 if [ -f '.$defaultFormatterFile.' ]; then
57 cat '.$defaultFormatterFile.'
61 _sql_dk_bash_completion_formatter_property_name() {
62 if [ -n "$formatter" ]; then # TODO: this does not match formatter name in apostrophes or quotes
63 local formatter_dir='.$formatterPropertiesDir.'/$formatter
64 if [ -d $formatter_dir ]; then
70 _sql_dk_bash_completion_formatter_property_choice() {
71 local property="${COMP_WORDS[COMP_CWORD-1]}";
72 local formatter_dir='.$formatterPropertiesDir.'/$formatter
73 local property_choices_file=$formatter_dir/$property/choices;
74 if [ -f $property_choices_file ]; then
75 cat $property_choices_file;
79 _sql_dk_bash_completion() {
80 local cur prev formatter
83 cur=${COMP_WORDS[COMP_CWORD]}
84 prev=${COMP_WORDS[COMP_CWORD-1]}
87 --db | --test-connection | --list-jdbc-properties)
88 if [ -f '.$databasesFile.' ]; then
89 COMPREPLY=( $( compgen -W " $( cat '.$databasesFile.' ) " -- $cur ) )
93 --formatter | --list-formatter-properties)
94 if [ -f '.$formattersFile.' ]; then
95 COMPREPLY=( $( compgen -W " $( cat '.$formattersFile.' ) " -- $cur ) )
97 COMPREPLY=( $( compgen -W "
101 if (/"(.*?)".*? \/\/\s*bash-completion:formatter/) {
104 last if (/\/\/\s*bash-completion:options/);
108 print ' " -- $cur ) );
112 --formatter-property)
113 formatter=$( _sql_dk_bash_completion_find_formatter "${COMP_WORDS[@]}" );
114 COMPREPLY=( $( compgen -W "$(_sql_dk_bash_completion_formatter_property_name )" -- $cur ) );
119 if [ "x${COMP_WORDS[COMP_CWORD-2]}" == "x--formatter-property" ]; then
120 formatter=$( _sql_dk_bash_completion_find_formatter "${COMP_WORDS[@]}" );
121 COMPREPLY=( $( compgen -W "$(_sql_dk_bash_completion_formatter_property_choice )" -- $cur ) );
125 COMPREPLY=( $( compgen -W "
129 if (/"(.*?)".*? \/\/\s*bash-completion:option/) {
134 print ' " -- $cur ) )
139 complete -F _sql_dk_bash_completion sql-dk