GIF89; GIF89; %PDF- %PDF-
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# shellcheck shell=bash
#
# Copyright (C) 2017 Canonical Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# etelpmoc is the reverse of complete: it de-serialises the tab completion
# request into the appropriate environment variables expected by the tab
# completion tools, performs whatever action is wanted, and serialises the
# result. It accomplishes this by having functions override the builtin
# completion commands.
#
# this always runs "inside", in the same environment you get when doing "snap
# run --shell", and snap-exec is the one setting the first argument to the
# completion script set in the snap. The rest of the arguments come through
# from snap-run --command=complete <snap> <args...>
_die() {
echo "$*" >&2
exit 1
}
if [[ "${BASH_SOURCE[0]}" != "$0" ]]; then
_die "ERROR: this is meant to be run, not sourced."
fi
if [[ "${#@}" -lt 8 ]]; then
_die "USAGE: $0 <script> <COMP_TYPE> <COMP_KEY> <COMP_POINT> <COMP_CWORD> <COMP_WORDBREAKS> <COMP_LINE> cmd [args...]"
fi
# De-serialize the command line arguments and populate tab completion environment
_compscript="$1"
shift
COMP_TYPE="$1"
shift
COMP_KEY="$1"
shift
COMP_POINT="$1"
shift
COMP_CWORD="$1"
shift
COMP_WORDBREAKS="$1"
shift
# duplication, but whitespace is eaten and that throws off COMP_POINT
COMP_LINE="$1"
shift
# rest of the args is the command itself
COMP_WORDS=("$@")
COMPREPLY=()
if [[ ! "$_compscript" ]]; then
_die "ERROR: completion script filename can't be empty"
fi
if [[ ! -f "$_compscript" ]]; then
_die "ERROR: completion script does not exist"
fi
# Source the bash-completion library functions and common completion setup
# shellcheck disable=SC1091
. /usr/share/bash-completion/bash_completion
# Now source the snap's 'completer' script itself
# shellcheck disable=SC1090
. "$_compscript"
# _compopts is an associative array, which keys are options. The options are
# described in bash(1)'s description of the -o option to the "complete"
# builtin, and they affect how the completion options are presented to the user
# (e.g. adding a slash for directories, whether to add a space after the
# completion, etc). These need setting in the user's environment so need
# serializing separately from the completions themselves.
declare -A _compopts
# wrap compgen, setting _compopts for any options given.
# (as these options need handling separately from the completions)
compgen() {
local opt
while getopts :o: opt; do
case "$opt" in
o)
_compopts["$OPTARG"]=1
;;
*)
# Do nothing, explicitly. This silences shellcheck's detector
# of unhandled command line options.
;;
esac
done
builtin compgen "$@"
}
# compopt replaces the original compopt with one that just sets/unsets entries
# in _compopts
compopt() {
local i
for ((i=0; i<$#; i++)); do
# in bash, ${!x} does variable indirection. Thus if x=1, ${!x} becomes $1.
case "${!i}" in
-o)
((i++))
_compopts[${!i}]=1
;;
+o)
((i++))
unset _compopts[${!i}]
;;
esac
done
}
_compfunc="_minimal"
_compact=""
# this is a lot more complicated than it should be, but it's how you
# get the result of 'complete -p "$1"' into an array, splitting it as
# the shell would.
readarray -t _comp < <(xargs -n1 < <(complete -p "$1") )
# _comp is now an array of the appropriate 'complete' invocation, word-split as
# the shell would, so we can now inspect it with getopts to determine the
# appropriate completion action.
# Unfortunately shellcheck doesn't know about readarray:
# shellcheck disable=SC2154
if [[ "${_comp[*]}" ]]; then
while getopts :abcdefgjksuvA:C:W:o:F: opt "${_comp[@]:1}"; do
case "$opt" in
a)
_compact="alias"
;;
b)
_compact="builtin"
;;
c)
_compact="command"
;;
d)
_compact="directory"
;;
e)
_compact="export"
;;
f)
_compact="file"
;;
g)
_compact="group"
;;
j)
_compact="job"
;;
k)
_compact="keyword"
;;
s)
_compact="service"
;;
u)
_compact="user"
;;
v)
_compact="variable"
;;
A)
_compact="$OPTARG"
;;
o)
_compopts["$OPTARG"]=1
;;
C|F)
_compfunc="$OPTARG"
;;
W)
readarray -t COMPREPLY < <( builtin compgen -W "$OPTARG" -- "${COMP_WORDS[COMP_CWORD]}" )
_compfunc=""
;;
*)
# P, G, S, and X are not supported yet
_die "ERROR: unknown option -$OPTARG"
;;
esac
done
fi
_bounce=""
case "$_compact" in
# these are for completing things that'll be interpreted by the
# "outside" bash, so send them back to be completed there.
"alias"|"export"|"job"|"variable")
_bounce="$_compact"
;;
esac
if [ ! "$_bounce" ]; then
if [ "$_compact" ]; then
readarray -t COMPREPLY < <( builtin compgen -A "$_compact" -- "${COMP_WORDS[COMP_CWORD]}" )
elif [ "$_compfunc" ]; then
# execute completion function (or the command if -C)
# from https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html:
# When the function or command is invoked, the first argument ($1) is
# the name of the command whose arguments are being completed, the
# second argument ($2) is the word being completed, and the third
# argument ($3) is the word preceding the word being completed on the
# current command line.
# that's "$1" "${COMP_WORDS[COMP_CWORD]}" and "${COMP_WORDS[COMP_CWORD-1]}"
# (probably)
$_compfunc "$1" "${COMP_WORDS[COMP_CWORD]}" "${COMP_WORDS[COMP_CWORD-1]}"
fi
fi
# print completions to stdout
echo "${!_compopts[@]}"
echo "$_bounce"
echo ""
printf "%s\\n" "${COMPREPLY[@]}"
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| complete.sh | File | 5.27 KB | 0644 |
|
| etelpmoc.sh | File | 6.87 KB | 0644 |
|
| info | File | 128 B | 0644 |
|
| snap-bootstrap | File | 11.76 MB | 0755 |
|
| snap-confine | File | 155.29 KB | 0755 |
|
| snap-confine.caps | File | 126 B | 0644 |
|
| snap-confine.v2-only.caps | File | 104 B | 0644 |
|
| snap-device-helper | File | 22.23 KB | 0755 |
|
| snap-discard-ns | File | 42.27 KB | 0755 |
|
| snap-exec | File | 4.48 MB | 0755 |
|
| snap-failure | File | 2.52 MB | 0755 |
|
| snap-fde-keymgr | File | 4.15 MB | 0755 |
|
| snap-gdbserver-shim | File | 1 MB | 0755 |
|
| snap-gpio-helper | File | 2.4 MB | 0755 |
|
| snap-mgmt | File | 9.86 KB | 0755 |
|
| snap-preseed | File | 10.03 MB | 0755 |
|
| snap-recovery-chooser | File | 7.85 MB | 0755 |
|
| snap-repair | File | 7.1 MB | 0755 |
|
| snap-seccomp | File | 2.06 MB | 0755 |
|
| snap-strace-shim | File | 14.23 KB | 0755 |
|
| snap-update-ns | File | 5.37 MB | 0755 |
|
| snapctl | File | 7.02 MB | 0755 |
|
| snapd | File | 27.19 MB | 0755 |
|
| snapd-apparmor | File | 2.08 MB | 0755 |
|
| snapd.core-fixup.sh | File | 3.74 KB | 0755 |
|
| snapd.run-from-snap | File | 73 B | 0755 |
|
| system-shutdown | File | 18.15 KB | 0755 |
|