import random
import string

# Función para generar la contraseña (renombrada a gen)
def gen(longitud=12, especiales=True):
    """
    Genera una contraseña segura con la longitud y caracteres especificados.

    :param longitud: La longitud de la contraseña (por defecto es 12)
    :param especiales: Si se deben incluir caracteres especiales (por defecto es True)
    :return: Contraseña generada
    """
    
    # Definir el conjunto de caracteres básicos
    caracteres = string.ascii_letters + string.digits
    
    # Si se deben incluir caracteres especiales
    if especiales:
        caracteres += string.punctuation

    # Generar la contraseña
    contraseña = ''.join(random.choice(caracteres) for _ in range(longitud))
    
    return contraseña

# Función principal para ejecutar desde consola
def main():
    import argparse

    parser = argparse.ArgumentParser(description="Generador de contraseñas seguras.")
    parser.add_argument("longitud", type=int, help="Longitud de la contraseña", default=12, nargs="?")
    parser.add_argument("--sin-especiales", action="store_true", help="Generar contraseña sin caracteres especiales")

    args = parser.parse_args()

    # Generar la contraseña según los parámetros
    contraseña = gen(args.longitud, especiales=not args.sin_especiales)
    
    print(f"Contraseña generada: {contraseña}")
