Skip to content

Commit a45d824

Browse files
committed
change: make --show-sensitive-info work with click
show-sensitive-info is now shared between all commands even if the argument was added to a last command.
1 parent faf3e22 commit a45d824

File tree

14 files changed

+88
-28
lines changed

14 files changed

+88
-28
lines changed

espefuse/cli_util.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,19 @@ def _process_args_for_args(self, state: ParsingState) -> None:
128128
state.rargs = []
129129

130130

131+
class EfuseContext(click.RichContext):
132+
@property
133+
def show_sensitive_info(self) -> bool:
134+
self.ensure_object(dict)
135+
value: bool = self.obj.get("show_sensitive_info", False)
136+
if not value:
137+
log.print("Sensitive data will be hidden (see --show-sensitive-info)")
138+
return value
139+
140+
131141
class ChainingCommand(click.RichCommand, click.Command):
142+
context_class = EfuseContext
143+
132144
def __init__(self, *args, **kwargs):
133145
super().__init__(*args, **kwargs)
134146

@@ -190,6 +202,7 @@ class Group(EsptoolGroup):
190202
}
191203

192204
command_class = ChainingCommand
205+
context_class = EfuseContext
193206

194207
@staticmethod
195208
def _split_to_groups(args: list[str]) -> tuple[list[list[str]], list[str]]:

espefuse/efuse/base_operations.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,10 @@ def callback(ctx: click.Context, param: click.Parameter, value: str):
143143

144144

145145
def add_show_sensitive_info_option(function: Callable):
146-
# TODO: originally this parameter worked for all commands even if it was
147-
# specified for a one of them
148146
def callback(ctx: click.Context, param: click.Parameter, value: bool):
149-
if value or ctx.obj.get("debug"):
147+
if value or ctx.obj.get("debug") or ctx.obj.get("show_sensitive_info", False):
150148
value = True
151-
else:
152-
print("Sensitive data will be hidden (see --show-sensitive-info)")
149+
ctx.obj["show_sensitive_info"] = value
153150
return value
154151

155152
return click.option(
@@ -158,6 +155,7 @@ def callback(ctx: click.Context, param: click.Parameter, value: bool):
158155
"Enabled if --debug is used.",
159156
is_flag=True,
160157
callback=callback,
158+
expose_value=True, # ensure that callback is called even if option is not used
161159
)(function)
162160

163161

espefuse/efuse/esp32/operations.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,12 @@ def add_cli_commands(self, cli: click.Group):
5252
)
5353
@add_force_write_always
5454
@add_show_sensitive_info_option
55-
def burn_key_cli(block_keyfile, no_protect_key, show_sensitive_info, **kwargs):
55+
@click.pass_context
56+
def burn_key_cli(
57+
ctx, block_keyfile, no_protect_key, show_sensitive_info, **kwargs
58+
):
5659
block, keyfile = zip(*block_keyfile)
60+
show_sensitive_info = ctx.show_sensitive_info
5761
self.burn_key(block, keyfile, no_protect_key, show_sensitive_info)
5862

5963
@cli.command(
@@ -74,6 +78,7 @@ def burn_key_cli(block_keyfile, no_protect_key, show_sensitive_info, **kwargs):
7478
def burn_key_digest_cli(
7579
ctx, keyfile, no_protect_key, show_sensitive_info, **kwargs
7680
):
81+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
7782
self.burn_key_digest(
7883
ctx.obj["esp"], keyfile, no_protect_key, show_sensitive_info
7984
)

espefuse/efuse/esp32c2/operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,12 @@ def add_cli_commands(self, cli: click.Group):
5555
@protect_options
5656
@add_force_write_always
5757
@add_show_sensitive_info_option
58-
def burn_key_cli(**kwargs):
58+
@click.pass_context
59+
def burn_key_cli(ctx, **kwargs):
5960
"""Burn the key block with the specified name"""
6061
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
6162
kwargs.pop("force_write_always")
63+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
6264
self.burn_key(block, keyfile, keypurpose, **kwargs)
6365

6466
@cli.command(
@@ -71,8 +73,10 @@ def burn_key_cli(**kwargs):
7173
@protect_options
7274
@add_force_write_always
7375
@add_show_sensitive_info_option
74-
def burn_key_digest_cli(**kwargs):
76+
@click.pass_context
77+
def burn_key_digest_cli(ctx, **kwargs):
7578
kwargs.pop("force_write_always")
79+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
7680
self.burn_key_digest(**kwargs)
7781

7882
###################################### Commands ######################################

espefuse/efuse/esp32c3/operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,11 @@ def add_cli_commands(self, cli: click.Group):
5656
@protect_options
5757
@add_force_write_always
5858
@add_show_sensitive_info_option
59-
def burn_key_cli(**kwargs):
59+
@click.pass_context
60+
def burn_key_cli(ctx, **kwargs):
6061
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
6162
kwargs.pop("force_write_always")
63+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
6264
self.burn_key(block, keyfile, keypurpose, **kwargs)
6365

6466
@cli.command(
@@ -86,9 +88,11 @@ def burn_key_cli(**kwargs):
8688
@protect_options
8789
@add_force_write_always
8890
@add_show_sensitive_info_option
89-
def burn_key_digest_cli(**kwargs):
91+
@click.pass_context
92+
def burn_key_digest_cli(ctx, **kwargs):
9093
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
9194
kwargs.pop("force_write_always")
95+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
9296
self.burn_key_digest(block, keyfile, keypurpose, **kwargs)
9397

9498
###################################### Commands ######################################

espefuse/efuse/esp32c5/operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,11 @@ def add_cli_commands(self, cli: click.Group):
5555
@protect_options
5656
@add_force_write_always
5757
@add_show_sensitive_info_option
58-
def burn_key_cli(**kwargs):
58+
@click.pass_context
59+
def burn_key_cli(ctx, **kwargs):
5960
kwargs.pop("force_write_always")
6061
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
62+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
6163
self.burn_key(block, keyfile, keypurpose, **kwargs)
6264

6365
@cli.command(
@@ -85,9 +87,11 @@ def burn_key_cli(**kwargs):
8587
@protect_options
8688
@add_force_write_always
8789
@add_show_sensitive_info_option
88-
def burn_key_digest_cli(**kwargs):
90+
@click.pass_context
91+
def burn_key_digest_cli(ctx, **kwargs):
8992
kwargs.pop("force_write_always")
9093
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
94+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
9195
self.burn_key_digest(block, keyfile, keypurpose, **kwargs)
9296

9397
###################################### Commands ######################################

espefuse/efuse/esp32c6/operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ def add_cli_commands(self, cli: click.Group):
5454
@protect_options
5555
@add_force_write_always
5656
@add_show_sensitive_info_option
57-
def burn_key_cli(**kwargs):
57+
@click.pass_context
58+
def burn_key_cli(ctx, **kwargs):
5859
kwargs.pop("force_write_always")
5960
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
61+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
6062
self.burn_key(block, keyfile, keypurpose, **kwargs)
6163

6264
@cli.command(
@@ -84,9 +86,11 @@ def burn_key_cli(**kwargs):
8486
@protect_options
8587
@add_force_write_always
8688
@add_show_sensitive_info_option
87-
def burn_key_digest_cli(**kwargs):
89+
@click.pass_context
90+
def burn_key_digest_cli(ctx, **kwargs):
8891
kwargs.pop("force_write_always")
8992
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
93+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
9094
self.burn_key_digest(block, keyfile, keypurpose, **kwargs)
9195

9296
###################################### Commands ######################################

espefuse/efuse/esp32c61/operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,11 @@ def add_cli_commands(self, cli: click.Group):
5656
@protect_options
5757
@add_force_write_always
5858
@add_show_sensitive_info_option
59-
def burn_key_cli(**kwargs):
59+
@click.pass_context
60+
def burn_key_cli(ctx, **kwargs):
6061
kwargs.pop("force_write_always")
6162
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
63+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
6264
self.burn_key(block, keyfile, keypurpose, **kwargs)
6365

6466
@cli.command(
@@ -86,9 +88,11 @@ def burn_key_cli(**kwargs):
8688
@protect_options
8789
@add_force_write_always
8890
@add_show_sensitive_info_option
89-
def burn_key_digest_cli(**kwargs):
91+
@click.pass_context
92+
def burn_key_digest_cli(ctx, **kwargs):
9093
kwargs.pop("force_write_always")
9194
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
95+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
9296
self.burn_key_digest(block, keyfile, keypurpose, **kwargs)
9397

9498
###################################### Commands ######################################

espefuse/efuse/esp32h2/operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ def add_cli_commands(self, cli: click.Group):
5454
@protect_options
5555
@add_force_write_always
5656
@add_show_sensitive_info_option
57-
def burn_key_cli(**kwargs):
57+
@click.pass_context
58+
def burn_key_cli(ctx, **kwargs):
5859
kwargs.pop("force_write_always")
5960
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
61+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
6062
self.burn_key(block, keyfile, keypurpose, **kwargs)
6163

6264
@cli.command(
@@ -84,9 +86,11 @@ def burn_key_cli(**kwargs):
8486
@protect_options
8587
@add_force_write_always
8688
@add_show_sensitive_info_option
87-
def burn_key_digest_cli(**kwargs):
89+
@click.pass_context
90+
def burn_key_digest_cli(ctx, **kwargs):
8891
kwargs.pop("force_write_always")
8992
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
93+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
9094
self.burn_key_digest(block, keyfile, keypurpose, **kwargs)
9195

9296
###################################### Commands ######################################

espefuse/efuse/esp32h21/operations.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ def add_cli_commands(self, cli: click.Group):
5454
@protect_options
5555
@add_force_write_always
5656
@add_show_sensitive_info_option
57-
def burn_key_cli(**kwargs):
57+
@click.pass_context
58+
def burn_key_cli(ctx, **kwargs):
5859
kwargs.pop("force_write_always")
5960
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
61+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
6062
self.burn_key(block, keyfile, keypurpose, **kwargs)
6163

6264
@cli.command(
@@ -84,9 +86,11 @@ def burn_key_cli(**kwargs):
8486
@protect_options
8587
@add_force_write_always
8688
@add_show_sensitive_info_option
87-
def burn_key_digest_cli(**kwargs):
89+
@click.pass_context
90+
def burn_key_digest_cli(ctx, **kwargs):
8891
kwargs.pop("force_write_always")
8992
block, keyfile, keypurpose = zip(*kwargs.pop("block_keyfile_keypurpose"))
93+
kwargs["show_sensitive_info"] = ctx.show_sensitive_info
9094
self.burn_key_digest(block, keyfile, keypurpose, **kwargs)
9195

9296
###################################### Commands ######################################

0 commit comments

Comments
 (0)