bash-completion.sh
author František Kučera <franta-hg@frantovo.cz>
Thu, 04 Jun 2020 00:46:00 +0200
branchv_0
changeset 47 428c278af4be
parent 37 3de41719d7eb
child 54 bc6e11cccdf4
permissions -rw-r--r--
rename option --data-source-url to --data-source-string In some implementations like JDBC, the connection string is URL, but in ODBC the string is not formally URL, so it is better to use more general term „data source string“ instead of URL. - data source name (DSN) = name of a pre-configured database connection that should be looked-up in configuration and used - data source string (connection string) = arbitrary string containing (in certain encoding which might and might not be URL) all needed parameters (e.g. server name + port + user name + password) Name and string might sometimes be also combined: in ODBC we can e.g. connect to a string: DSN=relpipe;someParameter=foo;someOther=bar which will lookup configuration for the „relpipe“ data source and will combine it with given parameters.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     1
# Relational pipes
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     2
# Copyright © 2019 František Kučera (Frantovo.cz, GlobalCode.info)
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     3
#
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     4
# This program is free software: you can redistribute it and/or modify
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     5
# it under the terms of the GNU General Public License as published by
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     6
# the Free Software Foundation, version 3 of the License.
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     7
#
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     8
# This program is distributed in the hope that it will be useful,
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    11
# GNU General Public License for more details.
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    12
#
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    13
# You should have received a copy of the GNU General Public License
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    14
# along with this program. If not, see <http://www.gnu.org/licenses/>.
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    15
37
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    16
_relpipe_tr_sql_completion_dsn() {
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    17
	if type relpipe-out-nullbyte &> /dev/null; then
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    18
		relpipe-tr-sql --list-data-sources | relpipe-out-nullbyte | while read -r -d '' name; do read -r -d '' description; echo $name; done
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    19
	fi
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    20
}
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    21
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    22
_relpipe_tr_sql_completion() {
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    23
	local w0 w1 w2
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    24
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    25
	COMPREPLY=()
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    26
	w0=${COMP_WORDS[COMP_CWORD]}
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    27
	w1=${COMP_WORDS[COMP_CWORD-1]}
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    28
	w2=${COMP_WORDS[COMP_CWORD-2]}
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    29
24
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    30
	DATA_TYPE=(
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    31
		"string"
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    32
		"integer"
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    33
		"boolean"
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    34
	)
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    35
47
428c278af4be rename option --data-source-url to --data-source-string
František Kučera <franta-hg@frantovo.cz>
parents: 37
diff changeset
    36
	DATA_SOURCE_STRING=(
37
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    37
		"Driver=SQLite3;Database=file::memory:"
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    38
		"Driver=SQLite3;Database=file:temp-relpipe.sqlite"
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    39
		"Driver=SQLite3;Database=file:/tmp/relpipe.sqlite"
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    40
	)
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    41
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    42
	if   [[ "$w1" == "--relation"      && "x$w0" == "x" ]];    then COMPREPLY=("''")
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    43
	elif [[ "$w2" == "--relation"      && "x$w0" == "x" ]];    then COMPREPLY=('"SELECT * FROM "')
24
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    44
	elif [[ "$w1" == "--type-cast"     && "x$w0" == "x" ]];    then COMPREPLY=("''")
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    45
	elif [[ "$w2" == "--type-cast"                      ]];    then COMPREPLY=($(compgen -W "${DATA_TYPE[*]}" -- "$w0"))
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    46
	elif [[ "$w1" == "--parameter"     && "x$w0" == "x" ]];    then COMPREPLY=("''")
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    47
	elif [[ "$w1" == "--copy"          && "x$w0" == "x" ]];    then COMPREPLY=("'.+'")
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    48
	elif [[ "$w1" == "--copy-renamed"  && "x$w0" == "x" ]];    then COMPREPLY=("'.+'")
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    49
	elif [[ "$w2" == "--copy-renamed"  && "x$w0" == "x" ]];    then COMPREPLY=("'copy_of_\$0'")
37
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    50
	elif [[ "$w1" == "--data-source-name"               ]];    then COMPREPLY=($(compgen -W "$(_relpipe_tr_sql_completion_dsn)" -- "$w0"))
47
428c278af4be rename option --data-source-url to --data-source-string
František Kučera <franta-hg@frantovo.cz>
parents: 37
diff changeset
    51
	elif [[ "$w1" == "--data-source-string"             ]];    then COMPREPLY=($(compgen -W "${DATA_SOURCE_STRING[*]}" -- "$w0"))
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    52
	else
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    53
		OPTIONS=(
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    54
			"--relation"
24
884ece10575d add --type-cast to allow explicit specification of type for given output attributes
František Kučera <franta-hg@frantovo.cz>
parents: 18
diff changeset
    55
			"--type-cast"
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    56
			"--parameter"
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    57
			"--copy"
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    58
			"--copy-renamed"
34
24c05e69d68f add ODBC library and --list-data-sources mode (DSN)
František Kučera <franta-hg@frantovo.cz>
parents: 24
diff changeset
    59
			"--list-data-sources"
37
3de41719d7eb add options --data-source-name and --data-source-url for custom datasource; drop options --file and --file-keep
František Kučera <franta-hg@frantovo.cz>
parents: 34
diff changeset
    60
			"--data-source-name"
47
428c278af4be rename option --data-source-url to --data-source-string
František Kučera <franta-hg@frantovo.cz>
parents: 37
diff changeset
    61
			"--data-source-string"
18
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    62
		)
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    63
		COMPREPLY=($(compgen -W "${OPTIONS[*]}" -- "$w0"))
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    64
	fi
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    65
}
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    66
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    67
complete -F _relpipe_tr_sql_completion relpipe-tr-sql
76cbba3f7041 bash-completion script
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    68
complete -F _relpipe_tr_sql_completion relpipe-in-sql