Coverage for pydaconf/cli.py: 0.00%

21 statements  

« prev     ^ index     » next       coverage.py v7.6.11, created at 2025-02-16 17:46 +0000

1try: 

2 import typer 

3 from cryptography.fernet import Fernet 

4except ImportError as e: 

5 raise ImportError('CLI dependencies are not installed, run `pip install pydaconf[cli]`') from e 

6 

7app = typer.Typer() 

8seal = typer.Typer() 

9app.add_typer(seal, name="seal") 

10 

11# TODO: Add better error handling 

12 

13@seal.command('generate-key') 

14def generate_key() -> None: 

15 """Generate symmetric encryption key for sealed secrets""" 

16 typer.echo(Fernet.generate_key().decode()) 

17 

18@seal.command('encrypt') 

19def generate(key: str, secret: str) -> None: 

20 """Encrypt secret with symmetric encryption key""" 

21 f = Fernet(key) 

22 typer.echo(f.encrypt(secret.encode()).decode()) 

23 

24@seal.command('decrypt') 

25def decrypt(key: str, secret: str) -> None: 

26 """Encrypt secret with symmetric encryption key""" 

27 f = Fernet(key) 

28 typer.echo(f.decrypt(secret).decode()) 

29 

30 

31if __name__ == "__main__": 

32 app()