import argparse
import json
import time
def parse_metadata_arguments(metadata_file, retry_interval=5):
"""
Parses metadata arguments from a JSON file, handling retry intervals.
Args:
metadata_file (str): Path to the JSON metadata file.
retry_interval (int): Retry interval in seconds (default: 5).
Returns:
dict: A dictionary containing the parsed metadata arguments.
Returns None if file not found or invalid JSON.
"""
try:
with open(metadata_file, 'r') as f:
metadata = json.load(f)
except FileNotFoundError:
print(f"Error: Metadata file not found: {metadata_file}")
return None
except json.JSONDecodeError:
print(f"Error: Invalid JSON in metadata file: {metadata_file}")
return None
# Validate required fields (example)
if 'target' not in metadata or 'retries' not in metadata:
print("Error: Metadata file missing required fields (target, retries).")
return None
# Ensure retries is an integer
if not isinstance(metadata['retries'], int) or metadata['retries'] <= 0:
print("Error: 'retries' must be a positive integer.")
return None
# Process retry interval
if 'retry_interval' in metadata:
try:
retry_interval = int(metadata['retry_interval'])
if retry_interval <= 0:
print("Error: retry_interval must be a positive integer.")
return None
except ValueError:
print("Error: retry_interval is not a valid integer.")
return None
return metadata
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Parse metadata arguments.')
parser.add_argument('metadata_file', type=str, help='Path to the metadata file.')
parser.add_argument('--retry_interval', type=int, default=5, help='Retry interval in seconds.')
args = parser.parse_args()
metadata = parse_metadata_arguments(args.metadata_file, args.retry_interval)
if metadata:
print("Parsed Metadata:")
print(json.dumps(metadata, indent=4)) # Pretty print for readability
Add your comment