Skip to content

Commit 98ff678

Browse files
daywalker90rustyrussell
authored andcommitted
msggen: add override for connect notification in cln-rpc aswell
Changelog-None
1 parent bf3379c commit 98ff678

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

contrib/msggen/msggen/gen/rpc/notification.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from msggen.model import Service
66
from msggen.gen.generator import IGenerator
77
from msggen.gen.rpc.rust import gen_composite
8+
from msggen.gen.grpc.util import notification_typename_overrides
89

910

1011
class NotificationGenerator(IGenerator):
@@ -43,7 +44,7 @@ def generate(self, service: Service) -> None:
4344
self.write("\n\n")
4445

4546
for notification in service.notifications:
46-
_, resp_decl = gen_composite(notification.response, self.meta)
47+
_, resp_decl = gen_composite(notification.response, self.meta, notification_typename_overrides)
4748
self.write(resp_decl)
4849

4950
self.write("pub mod requests{\n")

contrib/msggen/msggen/gen/rpc/rust.py

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,22 @@ def normalize_varname(field):
7171
return field
7272

7373

74-
def gen_field(field, meta):
74+
def gen_field(field, meta, override=None):
7575
if field.omit():
7676
return ("", "")
7777
if isinstance(field, CompositeField):
78-
return gen_composite(field, meta)
78+
return gen_composite(field, meta, override)
7979
elif isinstance(field, EnumField):
80-
return gen_enum(field, meta)
80+
return gen_enum(field, meta, override)
8181
elif isinstance(field, ArrayField):
82-
return gen_array(field, meta)
82+
return gen_array(field, meta, override)
8383
elif isinstance(field, PrimitiveField):
8484
return gen_primitive(field)
8585
else:
8686
raise TypeError(f"Unmanaged type {field}")
8787

8888

89-
def gen_enum(e, meta):
89+
def gen_enum(e, meta, override):
9090
defi, decl = "", ""
9191

9292
if e.omit():
@@ -95,14 +95,21 @@ def gen_enum(e, meta):
9595
if e.description != "":
9696
decl += f"/// {e.description}\n"
9797

98+
if override is None:
99+
message_name = e.typename.name
100+
override = lambda x: x
101+
typename = override(str(e.typename))
102+
else:
103+
typename = override(str(e.typename))
104+
message_name = typename
105+
98106
if e.deprecated:
99107
decl += "#[deprecated]\n"
100-
decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]\n#[allow(non_camel_case_types)]\npub enum {e.typename} {{\n"
108+
decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]\n#[allow(non_camel_case_types)]\npub enum {typename} {{\n"
101109

102110
m = meta["grpc-field-map"]
103111
m2 = meta["grpc-enum-map"]
104112

105-
message_name = e.typename.name
106113
assert not (message_name in m and message_name in m2)
107114
if message_name in m:
108115
m = m[message_name]
@@ -130,9 +137,9 @@ def gen_enum(e, meta):
130137
# representation
131138
decl += dedent(
132139
f"""\
133-
impl TryFrom<i32> for {e.typename} {{
140+
impl TryFrom<i32> for {typename} {{
134141
type Error = anyhow::Error;
135-
fn try_from(c: i32) -> Result<{e.typename}, anyhow::Error> {{
142+
fn try_from(c: i32) -> Result<{typename}, anyhow::Error> {{
136143
match c {{
137144
"""
138145
)
@@ -141,16 +148,16 @@ def gen_enum(e, meta):
141148
for v in sorted_variants:
142149
norm = v.normalized()
143150
# decl += f" #[serde(rename = \"{v}\")]\n"
144-
decl += f" {m[str(v)]} => Ok({e.typename}::{norm}),\n"
151+
decl += f" {m[str(v)]} => Ok({typename}::{norm}),\n"
145152
else:
146153
for i, v in enumerate(e.variants):
147154
norm = v.normalized()
148155
# decl += f" #[serde(rename = \"{v}\")]\n"
149-
decl += f" {i} => Ok({e.typename}::{norm}),\n"
156+
decl += f" {i} => Ok({typename}::{norm}),\n"
150157

151158
decl += dedent(
152159
f"""\
153-
o => Err(anyhow::anyhow!("Unknown variant {{}} for enum {e.typename}", o)),
160+
o => Err(anyhow::anyhow!("Unknown variant {{}} for enum {typename}", o)),
154161
}}
155162
}}
156163
}}
@@ -162,14 +169,14 @@ def gen_enum(e, meta):
162169
# appear in the schemas.
163170
decl += dedent(
164171
f"""\
165-
impl ToString for {e.typename} {{
172+
impl ToString for {typename} {{
166173
fn to_string(&self) -> String {{
167174
match self {{
168175
"""
169176
)
170177
for v in e.variants:
171178
norm = v.normalized()
172-
decl += f' {e.typename}::{norm} => "{norm}",\n'
179+
decl += f' {typename}::{norm} => "{norm}",\n'
173180
decl += dedent(
174181
f"""\
175182
}}.to_string()
@@ -220,10 +227,10 @@ def rename_if_necessary(original, name):
220227
return f""
221228

222229

223-
def gen_array(a, meta):
230+
def gen_array(a, meta, override=None):
224231
name = a.name.normalized().replace("[]", "")
225232
logger.debug(f"Generating array field {a.name} -> {name} ({a.path})")
226-
_, decl = gen_field(a.itemtype, meta)
233+
_, decl = gen_field(a.itemtype, meta, override)
227234

228235
if a.override():
229236
decl = "" # No declaration if we have an override
@@ -254,11 +261,11 @@ def gen_array(a, meta):
254261
return (defi, decl)
255262

256263

257-
def gen_composite(c, meta) -> Tuple[str, str]:
264+
def gen_composite(c, meta, override=None) -> Tuple[str, str]:
258265
logger.debug(f"Generating composite field {c.name} ({c.path})")
259266
fields = []
260267
for f in c.fields:
261-
fields.append(gen_field(f, meta))
268+
fields.append(gen_field(f, meta, override))
262269
fields = sorted(fields)
263270

264271
r = "".join([f[1] for f in fields])

0 commit comments

Comments
 (0)