author | František Kučera <franta-hg@frantovo.cz> |
Sat, 15 Aug 2015 10:47:56 +0200 | |
branch | v_0 |
changeset 209 | 8dfe037b3274 |
parent 159 | 9632b23df30c |
child 220 | 0bc544b38cfa |
permissions | -rwxr-xr-x |
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
1 |
#!/usr/bin/perl |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
2 |
|
83
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
3 |
# SQL-DK |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
4 |
# Copyright © 2013 František Kučera (frantovo.cz) |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
5 |
# |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
6 |
# This program is free software: you can redistribute it and/or modify |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
7 |
# it under the terms of the GNU General Public License as published by |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
8 |
# the Free Software Foundation, either version 3 of the License, or |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
9 |
# (at your option) any later version. |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
10 |
# |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
11 |
# This program is distributed in the hope that it will be useful, |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
12 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
13 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
14 |
# GNU General Public License for more details. |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
15 |
# |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
16 |
# You should have received a copy of the GNU General Public License |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
17 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
18 |
|
9563232ea0b7
bash completion: license
František Kučera <franta-hg@frantovo.cz>
parents:
82
diff
changeset
|
19 |
|
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
20 |
# Parses Java source code from STDIN and generates script for BASH completion |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
21 |
# Input (in this order): |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
22 |
# info/globalcode/sql/dk/Constants.java |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
23 |
# info/globalcode/sql/dk/formatting/* |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
24 |
# info/globalcode/sql/dk/CLIParser.java |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
25 |
|
82
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
26 |
# TODO: support database/formatter names with spaces |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
27 |
|
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
28 |
use strict; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
29 |
use warnings; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
30 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
31 |
my $configDir = "~"; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
32 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
33 |
while (<>) { |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
34 |
if (/"(.*?)".*? \/\/\s*bash-completion:dir/) { |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
35 |
$configDir .= "/$1"; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
36 |
last; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
37 |
} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
38 |
} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
39 |
|
82
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
40 |
my $databasesFile = "$configDir/bash-completion/databases"; |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
41 |
my $formattersFile = "$configDir/bash-completion/formatters"; |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
42 |
|
110
ff6bbd0223c3
Bash completion: no 'have sql-dk' test
František Kučera <franta-hg@frantovo.cz>
parents:
84
diff
changeset
|
43 |
print '#have sql-dk && |
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
44 |
_sql_dk() |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
45 |
{ |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
46 |
local cur prev |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
47 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
48 |
COMPREPLY=() |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
49 |
cur=${COMP_WORDS[COMP_CWORD]} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
50 |
prev=${COMP_WORDS[COMP_CWORD-1]} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
51 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
52 |
case "$prev" in |
159
9632b23df30c
InfoLister: list configured and configurable JDBC driver properties – option: --list-jdbc-properties
František Kučera <franta-hg@frantovo.cz>
parents:
110
diff
changeset
|
53 |
--db | --test-connection | --list-jdbc-properties) |
82
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
54 |
if [ -f '.$databasesFile.' ]; then |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
55 |
COMPREPLY=( $( compgen -W " $( cat '.$databasesFile.' ) " -- $cur ) ) |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
56 |
return 0 |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
57 |
fi |
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
58 |
;; |
209
8dfe037b3274
property annotations: grounds for --list-formatter-properties
František Kučera <franta-hg@frantovo.cz>
parents:
159
diff
changeset
|
59 |
--formatter | --list-formatter-properties) |
82
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
60 |
if [ -f '.$formattersFile.' ]; then |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
61 |
COMPREPLY=( $( compgen -W " $( cat '.$formattersFile.' ) " -- $cur ) ) |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
62 |
else |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
63 |
COMPREPLY=( $( compgen -W " |
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
64 |
'; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
65 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
66 |
while (<>) { |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
67 |
if (/"(.*?)".*? \/\/\s*bash-completion:formatter/) { |
82
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
68 |
print " $1\n"; |
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
69 |
} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
70 |
last if (/\/\/\s*bash-completion:options/); |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
71 |
} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
72 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
73 |
|
82
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
74 |
print ' " -- $cur ) ); |
adea6d8d3708
bash completion: use dynamic completion derived from configuration if available
František Kučera <franta-hg@frantovo.cz>
parents:
81
diff
changeset
|
75 |
fi |
81
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
76 |
return 0 |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
77 |
;; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
78 |
esac; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
79 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
80 |
COMPREPLY=( $( compgen -W " |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
81 |
'; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
82 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
83 |
while (<>) { |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
84 |
if (/"(.*?)".*? \/\/\s*bash-completion:option/) { |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
85 |
print " $1\n"; |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
86 |
} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
87 |
} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
88 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
89 |
print ' " -- $cur ) ) |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
90 |
return 0 |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
91 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
92 |
} |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
93 |
|
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
94 |
complete -F _sql_dk sql-dk |
847c83288d01
bash completion: perl + bash + ant for generating completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff
changeset
|
95 |
'; |