36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import argparse
|
|
import json
|
|
import logging
|
|
import os
|
|
|
|
|
|
def argparse_file_exists(file_path):
|
|
"""Validates whether a file exists."""
|
|
if not os.path.isfile(file_path):
|
|
raise argparse.ArgumentTypeError("File does not exist")
|
|
|
|
return os.path.abspath(file_path)
|
|
|
|
|
|
def argparse_file_json(file_path):
|
|
"""Validates whether a file contains JSON parsable by Python. Raises argparse.ArgumentTypeError if not."""
|
|
if not os.path.isfile(file_path):
|
|
raise argparse.ArgumentTypeError("Provided configuration file does not exist")
|
|
|
|
try:
|
|
with open(file_path, "r") as file:
|
|
data = json.load(file)
|
|
except json.decoder.JSONDecodeError:
|
|
raise argparse.ArgumentTypeError("Provided configuration file content is not json")
|
|
except Exception as e:
|
|
raise argparse.ArgumentTypeError("Cannot parse provided configuration file:\n" + str(e))
|
|
|
|
return data
|
|
|
|
|
|
def argparse_logging_level(level):
|
|
"""Validates that a string value is a valid logging level and returns the corresponding value."""
|
|
if hasattr(logging, level.upper()):
|
|
return level.upper()
|
|
raise argparse.ArgumentTypeError("Invalid logging level: " + str(level))
|