Convert CLI parsing from DIY to argparse
This commit is contained in:
parent
1e801fb3e8
commit
cb1cc280ed
@ -29,10 +29,13 @@ class BackupRotator:
|
|||||||
self.__config_paths = []
|
self.__config_paths = []
|
||||||
self.__calculated_actions = []
|
self.__calculated_actions = []
|
||||||
|
|
||||||
def run(self):
|
def run(self, configs, dry_run: bool = False):
|
||||||
|
|
||||||
self.log("Begin")
|
self.log("Begin")
|
||||||
self.consume_arguments()
|
|
||||||
|
self.__dry_run = dry_run
|
||||||
|
self.__config_paths = configs
|
||||||
|
|
||||||
self.consume_configs(self.__config_paths)
|
self.consume_configs(self.__config_paths)
|
||||||
|
|
||||||
# Rotate once per config
|
# Rotate once per config
|
||||||
@ -64,36 +67,10 @@ class BackupRotator:
|
|||||||
|
|
||||||
print(to_log)
|
print(to_log)
|
||||||
|
|
||||||
def consume_arguments(self):
|
|
||||||
|
|
||||||
self.__config_paths = []
|
|
||||||
|
|
||||||
for i in range(1, len(sys.argv)):
|
|
||||||
|
|
||||||
arg = sys.argv[i]
|
|
||||||
|
|
||||||
if arg == "--config":
|
|
||||||
i, one_path = self.consume_argument_companion(i)
|
|
||||||
self.__config_paths.append(one_path)
|
|
||||||
self.log("Found config path argument:", one_path)
|
|
||||||
|
|
||||||
elif arg == "--dry-run":
|
|
||||||
self.__dry_run = True
|
|
||||||
self.log("Activating global dry-run mode")
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def consume_argument_companion(arg_index):
|
|
||||||
|
|
||||||
companion_index = arg_index + 1
|
|
||||||
if companion_index >= len(sys.argv):
|
|
||||||
raise Exception("Expected argument after", sys.argv[arg_index])
|
|
||||||
|
|
||||||
return companion_index, sys.argv[companion_index]
|
|
||||||
|
|
||||||
def consume_configs(self, paths: list=None):
|
def consume_configs(self, paths: list=None):
|
||||||
|
|
||||||
if paths is None:
|
assert paths is not None, "Config paths cannot be None"
|
||||||
raise Exception("Auto-finding of config file not implemented")
|
assert len(paths) > 0, "Must provide at least one config file path"
|
||||||
|
|
||||||
# Use each config path
|
# Use each config path
|
||||||
for path in paths:
|
for path in paths:
|
||||||
|
30
main.py
30
main.py
@ -3,13 +3,41 @@
|
|||||||
|
|
||||||
from BackupRotator import BackupRotator
|
from BackupRotator import BackupRotator
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Mike's Backup Rotator. Helps automatically remove old backup files or folders."
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--config", "-c",
|
||||||
|
dest="config_files",
|
||||||
|
default=[],
|
||||||
|
action="append",
|
||||||
|
type=str,
|
||||||
|
help="Specify a configuration file. Can be called multiple times."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--dry-run", "-d",
|
||||||
|
dest="dry_run",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Only perform an analysis; Don't delete anything."
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
rotator = BackupRotator()
|
rotator = BackupRotator()
|
||||||
rotator.run()
|
rotator.run(
|
||||||
|
configs=args.config_files,
|
||||||
|
dry_run=args.dry_run
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user