#!/usr/bin/env python3
"""Compute a Seamless checksum for a file."""

import argparse
import sys

import seamless
from seamless.checksum.calculate_checksum import calculate_checksum


def _calculate_file_checksum(filename: str) -> str:
    with open(filename, "rb") as f:
        buffer = f.read()
    return calculate_checksum(buffer)


def _main(argv: list[str] | None = None) -> int:
    parser = argparse.ArgumentParser(
        prog="seamless-checksum",
        description="Compute a Seamless checksum (SHA-256) for a file",
    )
    parser.add_argument("file", help="Path to the file to checksum")
    args = parser.parse_args(argv)

    try:
        checksum = _calculate_file_checksum(args.file)
    except Exception as exc:
        print(f"Error: {exc}", file=sys.stderr)
        return 1

    print(checksum)
    return 0


def main(argv: list[str] | None = None) -> int:
    try:
        return _main(argv)
    finally:
        seamless.close()


if __name__ == "__main__":
    sys.exit(main())
