import argparse
import io
import sys
from typing import NoReturn
from robohash import Robohash


def main() -> NoReturn:
    """
    Command-line interface for Robohash.
    Parses arguments and generates a robot image based on input text.
    """
    parser = argparse.ArgumentParser(description="Generate a robot hash image from text input")
    parser.add_argument("-s", "--set", default="set1", help="Robot set to use (set1, set2, set3, set4, set5, or 'any')")
    parser.add_argument("-x", "--width", type=int, default=300, help="Width of output image")
    parser.add_argument("-y", "--height", type=int, default=300, help="Height of output image")
    parser.add_argument("-f", "--format", default="png", help="Output format (png, jpeg, etc.)")
    parser.add_argument("-b", "--bgset", help="Background set to use (bg1, bg2, or 'any')")
    parser.add_argument("-o", "--output", default="robohash.png", help="Output filename")
    parser.add_argument("text", help="Text to use for the hash")
    
    args = parser.parse_args()
    
    robohash = Robohash(args.text)
    robohash.assemble(
        roboset=args.set,
        bgset=args.bgset,
        sizex=args.width,
        sizey=args.height,
        format=args.format
    )
    
    robohash.img.save(args.output, format=args.format)
    sys.exit(0)

if __name__ == "__main__":
    main()