#!/usr/bin/env -S deno run --allow-read

import { Command } from "https://deno.land/x/cliffy@v1.0.0-rc.4/command/mod.ts";

import { Dict, Guesser, Runner, Simulator } from "./lib/lib.ts";
import { TableLogging } from "./lib/runner.ts";

async function main() {
	const args = await new Command().name("simulation")
		.description(
			"Program to simulate TUSMO game with guesser controller.",
		)
		.option(
			"-d, --dictionnary <path:string>",
			"Sets dictionnary to use words from.",
			{ default: "./data/liste_francais.txt" },
		).option(
			"-n, --length <length:number>",
			"Length of the word to use from the dictionnary.",
			{ default: 6 },
		).option(
			"-w, --wait <wait:number>",
			"Time to wait between guesses, in ms.",
			{ default: 500 },
		).parse(Deno.args);

	const dict = await Dict.from_file(args.options.dictionnary, args.options.length);

	const guesser = new Guesser(dict);
	const game = Simulator.from_dict_rand(dict);
	console.log("Target is", game.word);
	console.log();

	const runner = new Runner(game, guesser, new TableLogging(), args.options.wait);
	await runner.play_all();
}

if (import.meta.main) await main();
