package tpp

import (
	//"github.com/d5/tengo/v2"
	"github.com/d5/tengo/v2/stdlib"
	"surdeus.su/core/cli/mtool"
	//"fmt"
	"os"
	"log"
	"path/filepath"
	"context"
)

var Tool = mtool.T("tpp").Func(func(flags *mtool.Flags){
	var (
		modDir string
	)

	flags.StringVar(
		&modDir,
		"mod",
		".",
		"set the import directory",
	)

	filePaths := flags.Parse()

	t := NewTengo().
		SetPreCompile(func(ctx context.Context, s *Script){
			s.SetImports(stdlib.GetModuleMap(
				stdlib.AllModuleNames()...,
			))
			s.EnableFileImport(true)
			s.SetImportDir(modDir)
		})

	pp := New(t)
	for _, filePath := range filePaths {
		pth := filepath.FromSlash(filePath)
		bts, err := os.ReadFile(pth)
		if err != nil {
			log.Println("read error:", err)
			continue
		}
		_, out, err := pp.Process(
			context.Background(),
			pth,
			bts,
		)
		if err != nil {
			log.Println("pp error:", err)
			continue
		}
		os.Stdout.Write(out)
	}
}).Usage("[files]")