#!/usr/bin/env python3

# SPDX-License-Identifier: WTFPL

import argparse
import locale
import os
import signal
import sys
#import fileinput


def has_colors():
    if os.environ.get("NO_COLOR"):
        return False
    if os.environ.get("CLICOLOR_FORCE") or os.environ.get("FORCE_COLOR"):
        return True
    return sys.stdout.isatty()


def main():
    locale.setlocale(locale.LC_ALL, "")
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    signal.signal(signal.SIGPIPE, signal.SIG_DFL)

    parser = argparse.ArgumentParser(
        epilog="Warning: if input text contains invisible characters or ANSI "
        + "escape sequences, lines may get truncated earlier than expected",
    )
    parser.add_argument(
        "-l", "--length", type=int, default=80,
        help="Truncate line to LENGTH characters (not bytes). Default: 80",
    )
    parser.add_argument("file", default="-", nargs="?")
    args = parser.parse_args()

    if args.file == "-":
        fp = sys.stdin
    else:
        fp = open(args.file)

    with fp:
        skip_until_nl = False
        buf = ""
        while True:
            if not buf:
                buf = fp.readline(args.length)
                if not buf:
                    break

            elif len(buf) < args.length:
                buf += fp.readline(args.length - len(buf))

            pos = buf.find("\n")
            if pos >= 0:
                if skip_until_nl:
                    buf = buf[pos + 1:]
                else:
                    line, buf = buf[:pos], buf[pos + 1:]
                    print(line)
                skip_until_nl = False

            else:
                if skip_until_nl:
                    buf = ""
                else:
                    print(buf)
                    skip_until_nl = True


if __name__ == "__main__":
    main()
