comparison libervia/cli/cmd_uri.py @ 4075:47401850dec6

refactoring: rename `libervia.frontends.jp` to `libervia.cli`
author Goffi <goffi@goffi.org>
date Fri, 02 Jun 2023 14:54:26 +0200
parents libervia/frontends/jp/cmd_uri.py@26b7ed2817da
children
comparison
equal deleted inserted replaced
4074:26b7ed2817da 4075:47401850dec6
1 #!/usr/bin/env python3
2
3
4 # Libervia CLI
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
6
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU Affero General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU Affero General Public License for more details.
16
17 # You should have received a copy of the GNU Affero General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20
21 from . import base
22 from libervia.backend.core.i18n import _
23 from libervia.cli.constants import Const as C
24 from libervia.backend.tools.common import uri
25
26 __commands__ = ["Uri"]
27
28
29 class Parse(base.CommandBase):
30 def __init__(self, host):
31 base.CommandBase.__init__(
32 self,
33 host,
34 "parse",
35 use_profile=False,
36 use_output=C.OUTPUT_DICT,
37 help=_("parse URI"),
38 )
39
40 def add_parser_options(self):
41 self.parser.add_argument(
42 "uri", help=_("XMPP URI to parse")
43 )
44
45 async def start(self):
46 await self.output(uri.parse_xmpp_uri(self.args.uri))
47 self.host.quit()
48
49
50 class Build(base.CommandBase):
51 def __init__(self, host):
52 base.CommandBase.__init__(
53 self, host, "build", use_profile=False, help=_("build URI")
54 )
55
56 def add_parser_options(self):
57 self.parser.add_argument("type", help=_("URI type"))
58 self.parser.add_argument("path", help=_("URI path"))
59 self.parser.add_argument(
60 "-f",
61 "--field",
62 action="append",
63 nargs=2,
64 dest="fields",
65 metavar=("KEY", "VALUE"),
66 help=_("URI fields"),
67 )
68
69 async def start(self):
70 fields = dict(self.args.fields) if self.args.fields else {}
71 self.disp(uri.build_xmpp_uri(self.args.type, path=self.args.path, **fields))
72 self.host.quit()
73
74
75 class Uri(base.CommandBase):
76 subcommands = (Parse, Build)
77
78 def __init__(self, host):
79 super(Uri, self).__init__(
80 host, "uri", use_profile=False, help=_("XMPP URI parsing/generation")
81 )