import pathlib
import shutil
import subprocess
import tempfile

import numpy as np


def stl_from_1d(data, output, scale=[1, 1, 1], translate=[0, 0, 0]):
    with tempfile.TemporaryDirectory() as tmppath:
        tmpdir = pathlib.Path(tmppath)
        np.savetxt(tmpdir.joinpath("data.dat"), np.stack((data, data)))
        with open(tmpdir.joinpath("scad"), "wt") as scad:
            scad.write(
                f"mirror([1, 0, 0])"
                f"translate({translate})"
                f"scale({scale})"
                f"""surface("data.dat");"""
            )

        subprocess.run(("openscad", "scad", "-o", "data.stl"), cwd=tmpdir)

        shutil.copy2(tmpdir.joinpath("data.stl"), output)
