import argparse
import configparser
import logging
import pathlib

import numpy as np

from .stl import stl_from_1d

parser = argparse.ArgumentParser(description="Convert swash output to olaFlow input")
parser.add_argument("-v", "--verbose", action="count", default=0)
parser.add_argument("-c", "--config", default="config.ini")
args = parser.parse_args()

logging.basicConfig(level=max((10, 20 - 10 * args.verbose)))
log = logging.getLogger("sws_ola")

log.info("Starting sws -> olaFlow converter")
config = configparser.ConfigParser()
config.read(args.config)

bathy = np.loadtxt(config.get("bathy", "bathy"))[::-1]
hstru = np.loadtxt(config.get("bathy", "hstru"))[::-1]
poro = bathy + np.where(hstru == 0, -5, hstru)

out = pathlib.Path(config.get("bathy", "out"))
out.mkdir(exist_ok=True)
stl_from_1d(
    bathy,
    out.joinpath("bathy.stl"),
    config.get("bathy", "scale", fallback=[1, 1, 1]),
    config.get("bathy", "translate", fallback=[0, 0, 0]),
)
stl_from_1d(
    poro,
    out.joinpath("poro.stl"),
    config.get("bathy", "scale", fallback=[1, 1, 1]),
    config.get("bathy", "translate", fallback=[0, 0, 0]),
)
