sp-hydra-veil-cli/cli/commands/policy.py
2026-05-30 08:25:00 -05:00

53 lines
No EOL
1.5 KiB
Python

from core.controllers.PolicyController import PolicyController
import pprint
NAME = 'policy'
def register(subparsers):
parser = subparsers.add_parser(NAME)
subs = parser.add_subparsers(title='subcommands', dest='subcommand')
base = _base_parser()
subs.add_parser('preview', parents=[base])
subs.add_parser('instate', parents=[base])
subs.add_parser('inspect', parents=[base])
subs.add_parser('revoke', parents=[base])
return parser
def handle(arguments, main_parser):
if arguments.subcommand is None:
main_parser.parse_args(['policy', '--help'])
return
policy = PolicyController.get(arguments.policy)
if policy is None:
main_parser.error('the following argument should be a valid reference: --policy/-p')
if arguments.subcommand == 'preview':
print(PolicyController.preview(policy))
elif arguments.subcommand == 'instate':
PolicyController.instate(policy)
elif arguments.subcommand == 'inspect':
if PolicyController.is_instated(policy):
pprint.pp({'status': 'Instated'})
elif PolicyController.is_suggestible(policy):
pprint.pp({'status': 'Suggested'})
else:
pprint.pp({'status': 'Uninstated'})
elif arguments.subcommand == 'revoke':
PolicyController.revoke(policy)
def _base_parser():
import argparse
p = argparse.ArgumentParser(add_help=False)
p.add_argument('--policy', '-p', choices=['capability', 'privilege'], required=True)
return p