annotate frontends/src/jp/cmd_uri.py @ 2354:5129a0506739

jp (shell): fixed use of profile + added EOF handling: - main profile (i.e. the one specified on command line when invocating "jp shell") was not used. It is now added to arguments if the value is not overriden on command line or in use - EOF (i.e. when user press C-d) is now understood as "quit" command
author Goffi <goffi@goffi.org>
date Fri, 08 Sep 2017 07:58:10 +0200
parents 4b66f070cfbb
children 8b37a62336c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2240
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python2
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
3
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # jp: a SàT command line tool
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org)
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
6
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
11
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
16
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
19
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
20
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
21 import base
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat.core.i18n import _
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from sat_frontends.jp.constants import Const as C
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
24 from sat.tools.common import uri
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
25
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
26 __commands__ = ["Uri"]
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
27
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
28
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
29 class Parse(base.CommandBase):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
30
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
31 def __init__(self, host):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
32 base.CommandBase.__init__(self, host, 'parse', use_profile=False, use_output=C.OUTPUT_DICT, help=_(u'parse URI'))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
33
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
34 def add_parser_options(self):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
35 self.parser.add_argument("uri", type=base.unicode_decoder, help=_(u"XMPP URI to parse"))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
36
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
37 def start(self):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
38 self.output(uri.parseXMPPUri(self.args.uri))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
39
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
40
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
41 class Build(base.CommandBase):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
42
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
43 def __init__(self, host):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
44 base.CommandBase.__init__(self, host, 'build', use_profile=False, help=_(u'build URI'))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
45
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
46 def add_parser_options(self):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
47 self.parser.add_argument("type", type=base.unicode_decoder, help=_(u"URI type"))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
48 self.parser.add_argument("path", type=base.unicode_decoder, help=_(u"URI path"))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
49 self.parser.add_argument("-f",
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
50 "--field",
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
51 type=base.unicode_decoder,
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
52 action='append',
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
53 nargs=2,
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
54 dest='fields',
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
55 metavar=(u"KEY", u"VALUE"),
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
56 help=_(u"URI fields"))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
57
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
58 def start(self):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
59 fields = dict(self.args.fields) if self.args.fields else {}
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
60 self.disp(uri.buildXMPPUri(self.args.type, path=self.args.path, **fields))
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
61
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
62
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
63 class Uri(base.CommandBase):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
64 subcommands = (Parse, Build)
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
65
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
66 def __init__(self, host):
4b66f070cfbb jp (uri): new command to parse or generate XMPP URIs
Goffi <goffi@goffi.org>
parents:
diff changeset
67 super(Uri, self).__init__(host, 'uri', use_profile=False, help=_('XMPP URI parsing/generation'))