src.sysadmin.commandline_adapter
Command-line adapter for sysadmin operations.
1"""Command-line adapter for sysadmin operations.""" 2 3import os 4import sys 5 6import msgspec 7 8from src.metadata.credential_issuer_metadata import CredentialIssuerMetadata 9from src.metadata.postgresql_adapter import PostgreSQLMetadataRepository 10 11from .sysadmin_service import SysadminService 12 13_USAGE = """\ 14Usage: ec-issuer-cli <command> [args] 15 16Commands: 17 update-issuer-metadata Store credential issuer metadata JSON from stdin. 18 19Examples: 20 Update metadata from a json file on disk 21 ec-issuer-cli update-issuer-metadata < ~/metadata_example.json 22""" 23 24 25def _build_service() -> SysadminService: 26 connection_string = os.environ["POSTGRES_CONNECTION_STRING"] 27 metadata_repository = PostgreSQLMetadataRepository(connection_string) 28 return SysadminService(metadata_repository=metadata_repository) 29 30 31def _cmd_update_issuer_metadata() -> None: 32 content = sys.stdin.read() 33 try: 34 metadata = msgspec.json.decode(content, type=CredentialIssuerMetadata) 35 except msgspec.DecodeError as e: 36 print(f"Error: invalid metadata JSON: {e}", file=sys.stderr) 37 sys.exit(1) 38 39 _build_service().update_credential_issuer_metadata(metadata) 40 print("Credential issuer metadata updated.") 41 42 43def main() -> None: 44 """Entry point for the ec-issuer-cli command.""" 45 match sys.argv[1:]: 46 case ["update-issuer-metadata"]: 47 _cmd_update_issuer_metadata() 48 case _: 49 print(_USAGE, file=sys.stderr) 50 sys.exit(1) 51 52 53if __name__ == "__main__": 54 main()
def
main() -> None:
44def main() -> None: 45 """Entry point for the ec-issuer-cli command.""" 46 match sys.argv[1:]: 47 case ["update-issuer-metadata"]: 48 _cmd_update_issuer_metadata() 49 case _: 50 print(_USAGE, file=sys.stderr) 51 sys.exit(1)
Entry point for the ec-issuer-cli command.