mirror of
https://github.com/datafolklabs/cement.git
synced 2026-02-06 13:56:49 +00:00
parent
b16b99a0cf
commit
251bdcb3c1
@ -58,6 +58,7 @@ Refactoring:
|
||||
- `[ext.plugin]` [Issue #721](https://github.com/datafolklabs/cement/issues/721)
|
||||
- `[ext.print]` [Issue #722](https://github.com/datafolklabs/cement/issues/722)
|
||||
- `[ext.redis]` [Issue #723](https://github.com/datafolklabs/cement/issues/723)
|
||||
- `[ext.scrub]` [Issue #724](https://github.com/datafolklabs/cement/issues/724)
|
||||
- `[utils.fs]` [Issue #688](https://github.com/datafolklabs/cement/issues/688)
|
||||
- `[utils.misc]` [Issue #689](https://github.com/datafolklabs/cement/issues/689)
|
||||
- `[utils.shell]` [Issue #690](https://github.com/datafolklabs/cement/issues/690)
|
||||
|
||||
@ -2,21 +2,26 @@
|
||||
Cement scrub extension module.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
import re
|
||||
from typing import TYPE_CHECKING
|
||||
from .. import Controller
|
||||
from ..utils.misc import minimal_logger
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..core.foundation import App # pragma: nocover
|
||||
|
||||
LOG = minimal_logger(__name__)
|
||||
|
||||
|
||||
def scrub_output(app, text):
|
||||
def scrub_output(app: App, text: str) -> str:
|
||||
if app.pargs.scrub:
|
||||
text = app.scrub(text)
|
||||
return text
|
||||
|
||||
|
||||
def extend_scrub(app):
|
||||
def scrub(text):
|
||||
def extend_scrub(app: App) -> None:
|
||||
def scrub(text: str) -> str:
|
||||
if not hasattr(app._meta, 'scrub') or app._meta.scrub is None:
|
||||
return text # pragma: nocover
|
||||
elif isinstance(text, str):
|
||||
@ -34,7 +39,7 @@ class ScrubController(Controller):
|
||||
Add embedded options to the base controller to support scrubbing output.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
class Meta(Controller.Meta):
|
||||
#: Controller label
|
||||
label = 'scrub'
|
||||
|
||||
@ -50,7 +55,9 @@ class ScrubController(Controller):
|
||||
#: Command line argument options help
|
||||
argument_help = 'obfuscate sensitive data from rendered output'
|
||||
|
||||
def _pre_argument_parsing(self):
|
||||
_meta: Meta # type: ignore
|
||||
|
||||
def _pre_argument_parsing(self) -> None:
|
||||
if self._meta.argument_options is not None:
|
||||
assert isinstance(self._meta.argument_options, list), \
|
||||
"ScrubController.Meta.argument_options must be a list"
|
||||
@ -60,7 +67,7 @@ class ScrubController(Controller):
|
||||
dest='scrub')
|
||||
|
||||
|
||||
def load(app):
|
||||
def load(app: App) -> None:
|
||||
app.handler.register(ScrubController)
|
||||
app.hook.register('post_render', scrub_output)
|
||||
app.hook.register('pre_argument_parsing', extend_scrub)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user