question 223 CLI & Automation · easy
Arguments for a backup command
A backup script is run as backup SOURCE [--dest DIR] [--keep N] [--level fast|best] [--verify]. Describe those arguments with argparse and return the parsed values.
Function
backup_args(argv)argva list of words, e.g.
["/srv/shop", "--keep", "14"]Returns
{'source': …, 'dest': …, 'keep': …, 'level': …, 'verify': …}Arguments
source positional; --dest default "backups"; --keep whole number, default 7; --level one of fast, best, default fast; --verify a flagBad inputa missing source, a
--keep that isn't a whole number, or another level stops with SystemExitExamples
callbackup_args(['/srv/shop', '--keep', '14'])returns{'source': '/srv/shop', 'dest': 'backups', 'keep': 14, 'level': 'fast', 'verify': False}
callbackup_args(['data'])returns{'source': 'data', 'dest': 'backups', 'keep': 7, 'level': 'fast', 'verify': False}
callbackup_args(['data', '--level', 'best', '--verify'])returns{'source': 'data', 'dest': 'backups', 'keep': 7, 'level': 'best', 'verify': True}
callbackup_args(['--keep', '3'])raisesSystemExit