#!/usr/bin/env node
import fs from "fs"
import path from "path"
import { verifyCmd } from "@/commands"
import { NODE_ENV } from "@/constants"
import logger from "@/logger"
import { program } from "commander"
import { version } from "./package.json"

const cwd = process.cwd()
console.log("Environment:", NODE_ENV)

program.name("Kunkun CLI").description("CLI for Kunkun Extension Development").version(version)

function computeProjectDir(projectPath: string | undefined) {
	if (!projectPath) {
		projectPath = cwd
	} else if (fs.existsSync(projectPath)) {
		projectPath = path.resolve(projectPath)
	} else if (fs.existsSync(path.join(cwd, projectPath))) {
		projectPath = path.join(cwd, projectPath)
	} else {
		logger.error("Invalid project path")
		process.exit(1)
	}
	return projectPath
}

program
	.command("verify [project_path]")
	.description("Verify the validity of a Kunkun extension")
	.option("-b, --batch", "Batch mode", false)
	.option("-p, --publish", "Publish Mode. Will exit with 1 if invalid", false)
	.action((projectPath: string | undefined, opts: { batch: boolean; publish: boolean }) => {
		logger.info("cwd:", cwd)
		const valid = verifyCmd(computeProjectDir(projectPath), opts.batch)
		if (opts.publish && !valid) {
			process.exit(1)
		}
	})

program.parse()