#!/usr/bin/env python3

import os
import sys

if os.path.exists("micro/lib"):
    sys.path.insert(0, ".")

import asyncclick as click

from moat.main import get_link, main, NoPort

import logging

logger = logging.getLogger(__name__)


@main.command()
@click.option("-n", "--name", type=str, default="ser", help="Name of serial app")
@click.pass_obj
async def serial(obj, name):
    from codecs import getincrementaldecoder

    utf = getincrementaldecoder("utf-8")()
    async with get_link(obj) as req:
        while True:
            r = await req.send(["local", name, "raw"])
            try:
                r = utf.decode(r)
            except UnicodeDecodeError:
                pass
            logger.info("C:%s: %s", name, r)


if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    try:
        main(_anyio_backend="trio")
    except NoPort:
        print("No port given, socket doesn't work")
        sys.exit(1)
