import random
import sys
import os

def generate_random_file(count, filename, min_val=-100000, max_val=100000):
    """
    Generates a text file containing 'count' number of random signed integers.
    Args:
        count (int): The number of integers to generate.
        filename (str): The name of the output file.
        min_val (int): The minimum random value allowed.
        max_val (int): The maximum random value allowed.
    """
    print(f"--- File Generation Initiated ---")
    print(f"Target File: {filename}")
    print(f"Total Records: {count}")
    print(f"Range: [{min_val}, {max_val}]")
    
    try:
        with open(filename, 'w') as f:
            for i in range(count):
                # Generate a random integer within the specified range
                random_number = random.randint(min_val, max_val)
                
                # Write the number followed by a newline
                f.write(f"{random_number}\n")
        
        print("\n[SUCCESS] File generated successfully!")
        print(f"Check the contents of '{filename}'")

    except Exception as e:
        print(f"\n[ERROR] An error occurred during file writing: {e}")

if __name__ == "__main__":
    # Usage Check and Argument Parsing
    
    if len(sys.argv) < 3:
        print("Usage: python generate_input.py <COUNT> <OUTPUT_FILENAME> [MIN_VALUE] [MAX_VALUE]")
        sys.exit(1)

    try:
        # Required Arguments
        count = int(sys.argv[1])
        filename = sys.argv[2]
        
        # Optional Arguments (Range)
        min_val = -10000
        max_val = 10000
        
        if len(sys.argv) >= 4:
            min_val = int(sys.argv[3])
        if len(sys.argv) == 5:
            max_val = int(sys.argv[4])
            
        generate_random_file(count, filename, min_val, max_val)

    except ValueError:
        print("\n[ERROR] Count, Min Value, and Max Value must be valid integers.")
        sys.exit(1)
