annotate misc/_jp @ 3028:ab2696e34d29

Python 3 port: /!\ this is a huge commit /!\ starting from this commit, SàT is needs Python 3.6+ /!\ SàT maybe be instable or some feature may not work anymore, this will improve with time This patch port backend, bridge and frontends to Python 3. Roughly this has been done this way: - 2to3 tools has been applied (with python 3.7) - all references to python2 have been replaced with python3 (notably shebangs) - fixed files not handled by 2to3 (notably the shell script) - several manual fixes - fixed issues reported by Python 3 that where not handled in Python 2 - replaced "async" with "async_" when needed (it's a reserved word from Python 3.7) - replaced zope's "implements" with @implementer decorator - temporary hack to handle data pickled in database, as str or bytes may be returned, to be checked later - fixed hash comparison for password - removed some code which is not needed anymore with Python 3 - deactivated some code which needs to be checked (notably certificate validation) - tested with jp, fixed reported issues until some basic commands worked - ported Primitivus (after porting dependencies like urwid satext) - more manual fixes
author Goffi <goffi@goffi.org>
date Tue, 13 Aug 2019 19:08:41 +0200
parents d17772b0fe22
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
818
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #compdef jp jp_dev
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # jp: a SAT command line tool
1766
d17772b0fe22 copyright update
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
3 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)
818
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
4
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # This program is free software: you can redistribute it and/or modify
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # it under the terms of the GNU Affero General Public License as published by
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # the Free Software Foundation, either version 3 of the License, or
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # (at your option) any later version.
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
9
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # This program is distributed in the hope that it will be useful,
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # GNU Affero General Public License for more details.
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
14
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # You should have received a copy of the GNU Affero General Public License
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
17
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
18
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
19 #TODO: - caching (see _store_cache en _retrieve_cache)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
20 # - filtering imposibles arguments
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
21 # - arguments (jids, files)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
22
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
23 PYTHON='python2'
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
24
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
25 local optionals subcommands arguments
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
26 local context state state_descr line
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
27 typeset -A val_args
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
28
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
29 _jp() {
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
30 eval `/usr/bin/env $PYTHON 2> /dev/null <<- PYTHONEND
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
31 import re
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
32 from subprocess import check_output
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
33
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
34 # import sys
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
35 # words_raw="jp_dev " + ' '.join(sys.argv[1:]) # for debugging in a script
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
36 words_raw="$words" # $words is the command line currently completed
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
37
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
38 words_all = words_raw.split()
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
39 prog_name = words_all[0]
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
40
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
41 words_no_opt = [word for word in words_all if not word.startswith('-')] # command line without optional arguments
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
42
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
43 choices_cache = {}
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
44
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
45 ARG = r'[-a-z0-9_]' # charset accepted for an argument name
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
46 subcommands_re = re.compile(r"^ +{((?:" + ARG + r"+)(?:," + ARG + r"+)*)}", re.MULTILINE)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
47 optionals_re = re.compile(r"^ {2,}(--?" + ARG + r"+(?: [A-Z_0-9]+)?(?:, --" + ARG + r"+(?: [A-Z_0-9]+)?)?)\n? {2,}(.*(?:\n {4,}.*)*$)", re.MULTILINE)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
48 arguments_re = re.compile(r"^ {2,}([a-z_]" + ARG + r"*) {2,}(.*$)", re.MULTILINE)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
49 clean_re = re.compile(r"(?P<prefix_spaces>^ +)|(?P<double_spaces> {2,})|(?P<newline>\n)|(?P<quote>')|(?P<suffix_spaces> +$)", re.MULTILINE)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
50
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
51 def _clean(desc):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
52 def sub_clean(match):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
53 matched_dict = match.groupdict()
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
54 matched = {matched for matched in matched_dict if matched_dict[matched]}
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
55 if matched.intersection(('prefix_spaces', 'suffix_spaces')):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
56 return ''
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
57 elif matched.intersection(('double_spaces', 'newline')):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
58 return ' '
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
59 elif matched.intersection(('quote',)):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
60 return r"'\''"
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
61 else:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
62 raise ValueError
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
63 return clean_re.sub(sub_clean, desc)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
64
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
65 def parse_help(jp_help):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
66 # parse the help returning subcommands, optionals arguments, and mandatory arguments
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
67 subcommands = subcommands_re.findall(jp_help)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
68 subcommands = {subcommand:"" for subcommand in subcommands[0].split(',')} if subcommands else {}
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
69 optionals = dict(optionals_re.findall(jp_help))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
70 arguments = dict(arguments_re.findall(jp_help))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
71 for subcommand in subcommands:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
72 subcommands[subcommand] = arguments.pop(subcommand, '')
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
73 return subcommands, optionals, arguments
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
74
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
75 def get_choice(opt_choice):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
76 choices = choices_cache.get(opt_choice)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
77 if choices is not None:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
78 return choices
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
79 if opt_choice == 'PROFILE':
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
80 profiles = check_output([prog_name, 'profile', 'list'])
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
81 choices = ":profile:(%s)" % ' '.join(profiles.split('\n'))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
82 if choices:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
83 choices_cache[opt_choice] = choices
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
84 return choices
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
85 else:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
86 return ""
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
87
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
88 def construct_opt(opts, desc):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
89 # construct zsh's _arguments line for optional arguments
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
90 arg_lines = []
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
91 for opt in opts.split(', '):
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
92 try:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
93 opt_name, opt_choice = opt.split()
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
94 except ValueError:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
95 # there is no argument
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
96 opt_name, opt_choice = opt, None
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
97 # arg_lines.append("'()%s[%s]%s'" % (opt_name+('=' if opt_name.startswith('--') else '+'),
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
98 arg_lines.append("'()%s[%s]%s'" % (opt_name,
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
99 _clean(desc),
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
100 "%s" % get_choice(opt_choice) if opt_choice else ''
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
101 ))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
102 return ' '.join(arg_lines)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
103
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
104 current_args = []
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
105
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
106 while True:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
107 # parse jp's help recursively until words_no_opt doesn't correspond anymore to a subcommand
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
108 try:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
109 current_args.append(words_no_opt.pop(0))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
110 jp_help = check_output(current_args + ['--help'])
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
111 # print "jp_help (%s):\n%s\n\n---\n" % (' '.join(current_args), jp_help) # for debugging
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
112 subcommands, optionals, arguments = parse_help(jp_help)
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
113 if words_no_opt[0] not in subcommands:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
114 break
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
115 except IndexError:
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
116 break
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
117
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
118 # now we fill the arrays so zsh can use them
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
119 env=[]
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
120 env.append("optionals=(%s)" % ' '.join(construct_opt(opt, desc) for opt, desc in optionals.items()))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
121 env.append("subcommands=(%s)" % ' '.join(["'%s[%s]'" % (subcommand, _clean(desc)) for subcommand, desc in subcommands.items()]))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
122 env.append("arguments=(%s)" % ' '.join(["'%s[%s]'" % (argument, _clean(desc)) for argument, desc in arguments.items()]))
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
123
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
124 print ";".join(env) # this line is for eval
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
125 PYTHONEND
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
126 `
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
127
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
128 if [ -n "$optionals" ]; then
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
129 _values optional $optionals
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
130
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
131 fi
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
132 if [ -n "$subcommands" ]; then
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
133 _values subcommand $subcommands
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
134 fi
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
135 if [ -n "$arguments" ]; then
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
136 #_values argument $arguments
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
137 fi
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
138 }
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
139
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
140
c328bcc4db71 jp: zsh completion, first draft (added in a new /misc directory):
Goffi <goffi@goffi.org>
parents:
diff changeset
141 _jp "$@"