annotate libervia/cli/cmd_info.py @ 4306:94e0968987cd

plugin XEP-0033: code modernisation, improve delivery, data validation: - Code has been rewritten using Pydantic models and `async` coroutines for data validation and cleaner element parsing/generation. - Delivery has been completely rewritten. It now works even if server doesn't support multicast, and send to local multicast service first. Delivering to local multicast service first is due to bad support of XEP-0033 in server (notably Prosody which has an incomplete implementation), and the current impossibility to detect if a sub-domain service handles fully multicast or only for local domains. This is a workaround to have a good balance between backward compatilibity and use of bandwith, and to make it work with the incoming email gateway implementation (the gateway will only deliver to entities of its own domain). - disco feature checking now uses `async` corountines. `host` implementation still use Deferred return values for compatibility with legacy code. rel 450
author Goffi <goffi@goffi.org>
date Thu, 26 Sep 2024 16:12:01 +0200
parents 0d7bb4df2343
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
1 #!/usr/bin/env python3
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
3
4075
47401850dec6 refactoring: rename `libervia.frontends.jp` to `libervia.cli`
Goffi <goffi@goffi.org>
parents: 4074
diff changeset
4 # Libervia CLI
3479
be6d91572633 date update
Goffi <goffi@goffi.org>
parents: 3207
diff changeset
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
6
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
11
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
16
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
19
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
20 from pprint import pformat
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
21
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
22 from libervia.backend.core.i18n import _
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
23 from libervia.backend.tools.common import data_format, date_utils
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
24 from libervia.backend.tools.common.ansi import ANSI as A
4075
47401850dec6 refactoring: rename `libervia.frontends.jp` to `libervia.cli`
Goffi <goffi@goffi.org>
parents: 4074
diff changeset
25 from libervia.cli import common
47401850dec6 refactoring: rename `libervia.frontends.jp` to `libervia.cli`
Goffi <goffi@goffi.org>
parents: 4074
diff changeset
26 from libervia.cli.constants import Const as C
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
27
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
28 from . import base
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
29
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
30 __commands__ = ["Info"]
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
31
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
32
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
33 class Disco(base.CommandBase):
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
34 def __init__(self, host):
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
35 extra_outputs = {"default": self.default_output}
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
36 super(Disco, self).__init__(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
37 host,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
38 "disco",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
39 use_output="complex",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
40 extra_outputs=extra_outputs,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
41 help=_("service discovery"),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
42 )
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
43
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
44 def add_parser_options(self):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
45 self.parser.add_argument("jid", help=_("entity to discover"))
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
46 self.parser.add_argument(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
47 "-t",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
48 "--type",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
49 type=str,
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
50 choices=("infos", "items", "both", "external", "all"),
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
51 default="all",
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
52 help=_("type of data to discover"),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
53 )
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
54 self.parser.add_argument("-n", "--node", default="", help=_("node to use"))
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
55 self.parser.add_argument(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
56 "-C",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
57 "--no-cache",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
58 dest="use_cache",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
59 action="store_false",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
60 help=_("ignore cache"),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
61 )
2346
c903c259402a jp (info/disco): type selection + output improvments:
Goffi <goffi@goffi.org>
parents: 2343
diff changeset
62
c903c259402a jp (info/disco): type selection + output improvments:
Goffi <goffi@goffi.org>
parents: 2343
diff changeset
63 def default_output(self, data):
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
64 features = data.get("features", [])
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
65 identities = data.get("identities", [])
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
66 extensions = data.get("extensions", {})
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
67 items = data.get("items", [])
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
68 external = data.get("external", [])
2346
c903c259402a jp (info/disco): type selection + output improvments:
Goffi <goffi@goffi.org>
parents: 2343
diff changeset
69
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
70 identities_table = common.Table(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
71 self.host,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
72 identities,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
73 headers=(_("category"), _("type"), _("name")),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
74 use_buffer=True,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
75 )
2346
c903c259402a jp (info/disco): type selection + output improvments:
Goffi <goffi@goffi.org>
parents: 2343
diff changeset
76
c903c259402a jp (info/disco): type selection + output improvments:
Goffi <goffi@goffi.org>
parents: 2343
diff changeset
77 extensions_tpl = []
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
78 extensions_types = list(extensions.keys())
1414
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
79 extensions_types.sort()
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
80 for type_ in extensions_types:
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
81 fields = []
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
82 for field in extensions[type_]:
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
83 field_lines = []
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
84 data, values = field
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
85 data_keys = list(data.keys())
1414
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
86 data_keys.sort()
159d16336f87 core, bridge, jp: management of service discovery extensions (XEP-0128)
Goffi <goffi@goffi.org>
parents: 1396
diff changeset
87 for key in data_keys:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
88 field_lines.append(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
89 A.color("\t", C.A_SUBHEADER, key, A.RESET, ": ", data[key])
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
90 )
2710
b6e16a89311b jp (info/disco): better default output for extensions
Goffi <goffi@goffi.org>
parents: 2681
diff changeset
91 if len(values) == 1:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
92 field_lines.append(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
93 A.color(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
94 "\t",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
95 C.A_SUBHEADER,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
96 "value",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
97 A.RESET,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
98 ": ",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
99 values[0] or (A.BOLD + "UNSET"),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
100 )
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
101 )
2710
b6e16a89311b jp (info/disco): better default output for extensions
Goffi <goffi@goffi.org>
parents: 2681
diff changeset
102 elif len(values) > 1:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
103 field_lines.append(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
104 A.color("\t", C.A_SUBHEADER, "values", A.RESET, ": ")
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
105 )
2710
b6e16a89311b jp (info/disco): better default output for extensions
Goffi <goffi@goffi.org>
parents: 2681
diff changeset
106
b6e16a89311b jp (info/disco): better default output for extensions
Goffi <goffi@goffi.org>
parents: 2681
diff changeset
107 for value in values:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
108 field_lines.append(A.color("\t - ", A.BOLD, value))
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
109 fields.append("\n".join(field_lines))
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
110 extensions_tpl.append(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
111 "{type_}\n{fields}".format(type_=type_, fields="\n\n".join(fields))
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
112 )
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
113
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
114 items_table = common.Table(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
115 self.host, items, headers=(_("entity"), _("node"), _("name")), use_buffer=True
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
116 )
2346
c903c259402a jp (info/disco): type selection + output improvments:
Goffi <goffi@goffi.org>
parents: 2343
diff changeset
117
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
118 template = []
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
119 fmt_kwargs = {}
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
120 if features:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
121 template.append(A.color(C.A_HEADER, _("Features")) + "\n\n{features}")
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
122 if identities:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
123 template.append(A.color(C.A_HEADER, _("Identities")) + "\n\n{identities}")
2346
c903c259402a jp (info/disco): type selection + output improvments:
Goffi <goffi@goffi.org>
parents: 2343
diff changeset
124 if extensions:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
125 template.append(A.color(C.A_HEADER, _("Extensions")) + "\n\n{extensions}")
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
126 if items:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
127 template.append(A.color(C.A_HEADER, _("Items")) + "\n\n{items}")
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
128 if external:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
129 fmt_lines = []
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
130 for e in external:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
131 data = {k: e[k] for k in sorted(e)}
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
132 host = data.pop("host")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
133 type_ = data.pop("type")
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
134 fmt_lines.append(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
135 A.color(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
136 "\t",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
137 C.A_SUBHEADER,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
138 host,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
139 " ",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
140 A.RESET,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
141 "[",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
142 C.A_LEVEL_COLORS[1],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
143 type_,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
144 A.RESET,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
145 "]",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
146 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
147 )
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
148 extended = data.pop("extended", None)
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
149 for key, value in data.items():
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
150 fmt_lines.append(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
151 A.color(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
152 "\t\t",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
153 C.A_LEVEL_COLORS[2],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
154 f"{key}: ",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
155 C.A_LEVEL_COLORS[3],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
156 str(value),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
157 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
158 )
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
159 if extended:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
160 fmt_lines.append(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
161 A.color(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
162 "\t\t",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
163 C.A_HEADER,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
164 "extended",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
165 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
166 )
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
167 nb_extended = len(extended)
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
168 for idx, form_data in enumerate(extended):
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
169 namespace = form_data.get("namespace")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
170 if namespace:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
171 fmt_lines.append(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
172 A.color(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
173 "\t\t",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
174 C.A_LEVEL_COLORS[2],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
175 "namespace: ",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
176 C.A_LEVEL_COLORS[3],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
177 A.BOLD,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
178 namespace,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
179 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
180 )
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
181 for field_data in form_data["fields"]:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
182 name = field_data.get("name")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
183 if not name:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
184 continue
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
185 field_type = field_data.get("type")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
186 if "multi" in field_type:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
187 value = ", ".join(field_data.get("values") or [])
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
188 else:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
189 value = field_data.get("value")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
190 if value is None:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
191 continue
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
192 if field_type == "boolean":
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
193 value = C.bool(value)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
194 fmt_lines.append(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
195 A.color(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
196 "\t\t",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
197 C.A_LEVEL_COLORS[2],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
198 f"{name}: ",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
199 C.A_LEVEL_COLORS[3],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
200 A.BOLD,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
201 str(value),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
202 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
203 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
204 if nb_extended > 1 and idx < nb_extended - 1:
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
205 fmt_lines.append("\n")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
206
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
207 fmt_lines.append("\n")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
208
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
209 template.append(
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
210 A.color(C.A_HEADER, _("External")) + "\n\n{external_formatted}"
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
211 )
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
212 fmt_kwargs["external_formatted"] = "\n".join(fmt_lines)
966
9cae72da1b95 jp: added disco subcommand
Goffi <goffi@goffi.org>
parents:
diff changeset
213
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
214 print(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
215 "\n\n".join(template).format(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
216 features="\n".join(features),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
217 identities=identities_table.display().string,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
218 extensions="\n".join(extensions_tpl),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
219 items=items_table.display().string,
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
220 **fmt_kwargs,
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
221 )
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
222 )
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
223
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
224 async def start(self):
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
225 infos_requested = self.args.type in ("infos", "both", "all")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
226 items_requested = self.args.type in ("items", "both", "all")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
227 exter_requested = self.args.type in ("external", "all")
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
228 if self.args.node:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
229 if self.args.type == "external":
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
230 self.parser.error(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
231 "--node can't be used with discovery of external services "
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
232 '(--type="external")'
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
233 )
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
234 else:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
235 exter_requested = False
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
236 jids = await self.host.check_jids([self.args.jid])
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
237 jid = jids[0]
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
238 data = {}
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
239
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
240 # infos
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
241 if infos_requested:
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
242 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 4035
diff changeset
243 infos = await self.host.bridge.disco_infos(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
244 jid,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
245 node=self.args.node,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
246 use_cache=self.args.use_cache,
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
247 profile_key=self.host.profile,
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
248 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
249 except Exception as e:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
250 self.disp(_("error while doing discovery: {e}").format(e=e), error=True)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
251 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
252
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
253 else:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
254 features, identities, extensions = infos
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
255 features.sort()
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
256 identities.sort(key=lambda identity: identity[2])
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
257 data.update(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
258 {
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
259 "features": features,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
260 "identities": identities,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
261 "extensions": extensions,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
262 }
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
263 )
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
264
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
265 # items
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
266 if items_requested:
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
267 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 4035
diff changeset
268 items = await self.host.bridge.disco_items(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
269 jid,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
270 node=self.args.node,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
271 use_cache=self.args.use_cache,
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
272 profile_key=self.host.profile,
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
273 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
274 except Exception as e:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
275 self.disp(_("error while doing discovery: {e}").format(e=e), error=True)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
276 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
277 else:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
278 items.sort(key=lambda item: item[2])
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
279 data["items"] = items
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
280
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
281 # external
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
282 if exter_requested:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
283 try:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
284 ext_services_s = await self.host.bridge.external_disco_get(
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
285 jid,
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
286 self.host.profile,
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
287 )
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
288 except Exception as e:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
289 self.disp(
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
290 _("error while doing external service discovery: {e}").format(e=e),
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
291 error=True,
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
292 )
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
293 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
294 else:
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
295 data["external"] = data_format.deserialise(
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
296 ext_services_s, type_check=list
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
297 )
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
298
4035
9c76678a39e2 cli (info/disco): Add external services in results:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
299 # output
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
300 await self.output(data)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
301 self.host.quit()
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
302
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
303
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
304 class Version(base.CommandBase):
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
305 def __init__(self, host):
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
306 super(Version, self).__init__(host, "version", help=_("software version"))
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
307
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
308 def add_parser_options(self):
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
309 self.parser.add_argument("jid", type=str, help=_("Entity to request"))
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
310
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
311 async def start(self):
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
312 jids = await self.host.check_jids([self.args.jid])
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
313 jid = jids[0]
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
314 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 4035
diff changeset
315 data = await self.host.bridge.software_version_get(jid, self.host.profile)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
316 except Exception as e:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
317 self.disp(_("error while trying to get version: {e}").format(e=e), error=True)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
318 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
319 else:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
320 infos = []
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
321 name, version, os = data
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
322 if name:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
323 infos.append(_("Software name: {name}").format(name=name))
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
324 if version:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
325 infos.append(_("Software version: {version}").format(version=version))
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
326 if os:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
327 infos.append(_("Operating System: {os}").format(os=os))
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
328
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
329 print("\n".join(infos))
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
330 self.host.quit()
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
331
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
332
2114
dc5d214f0a3b jp (info/session): added a command to get data on current session
Goffi <goffi@goffi.org>
parents: 1960
diff changeset
333 class Session(base.CommandBase):
dc5d214f0a3b jp (info/session): added a command to get data on current session
Goffi <goffi@goffi.org>
parents: 1960
diff changeset
334 def __init__(self, host):
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
335 extra_outputs = {"default": self.default_output}
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
336 super(Session, self).__init__(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
337 host,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
338 "session",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
339 use_output="dict",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
340 extra_outputs=extra_outputs,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
341 help=_("running session"),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
342 )
2114
dc5d214f0a3b jp (info/session): added a command to get data on current session
Goffi <goffi@goffi.org>
parents: 1960
diff changeset
343
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
344 def add_parser_options(self):
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
345 pass
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
346
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
347 async def default_output(self, data):
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
348 started = data["started"]
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
349 data["started"] = "{short} (UTC, {relative})".format(
2605
87f8cf51fca5 jp (info/session): show short + relative date by default for "started"
Goffi <goffi@goffi.org>
parents: 2600
diff changeset
350 short=date_utils.date_fmt(started),
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
351 relative=date_utils.date_fmt(started, "relative"),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
352 )
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
353 await self.host.output(C.OUTPUT_DICT, "simple", {}, data)
2114
dc5d214f0a3b jp (info/session): added a command to get data on current session
Goffi <goffi@goffi.org>
parents: 1960
diff changeset
354
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
355 async def start(self):
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
356 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 4035
diff changeset
357 data = await self.host.bridge.session_infos_get(self.host.profile)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
358 except Exception as e:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
359 self.disp(_("Error getting session infos: {e}").format(e=e), error=True)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
360 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
361 else:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
362 await self.output(data)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
363 self.host.quit()
2114
dc5d214f0a3b jp (info/session): added a command to get data on current session
Goffi <goffi@goffi.org>
parents: 1960
diff changeset
364
dc5d214f0a3b jp (info/session): added a command to get data on current session
Goffi <goffi@goffi.org>
parents: 1960
diff changeset
365
3207
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
366 class Devices(base.CommandBase):
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
367 def __init__(self, host):
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
368 super(Devices, self).__init__(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
369 host, "devices", use_output=C.OUTPUT_LIST_DICT, help=_("devices of an entity")
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
370 )
3207
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
371
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
372 def add_parser_options(self):
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
373 self.parser.add_argument(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
374 "jid", type=str, nargs="?", default="", help=_("Entity to request")
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
375 )
3207
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
376
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
377 async def start(self):
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
378 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 4035
diff changeset
379 data = await self.host.bridge.devices_infos_get(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
380 self.args.jid, self.host.profile
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
381 )
3207
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
382 except Exception as e:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
383 self.disp(_("Error getting devices infos: {e}").format(e=e), error=True)
3207
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
384 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
385 else:
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
386 data = data_format.deserialise(data, type_check=list)
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
387 await self.output(data)
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
388 self.host.quit()
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
389
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
390
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
391 class Info(base.CommandBase):
3207
a10e12dfbda8 jp(info): `devices` command first draft:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
392 subcommands = (Disco, Version, Session, Devices)
971
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
393
8ca5c990ed92 jp: "disco" subcommand, moved into a new "info" subcommand + added "version" subcommand which get software version
Goffi <goffi@goffi.org>
parents: 966
diff changeset
394 def __init__(self, host):
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
395 super(Info, self).__init__(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
396 host,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
397 "info",
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
398 use_profile=False,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
399 help=_("Get various pieces of information on entities"),
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
400 )