#!/usr/bin/env node


import "./openApi-B6J9qPwL.mjs";
import { r as createClient } from "./src-BehyjtZ7.mjs";
import { Command } from "commander";

//#region package.json
var version = "0.90.5";
var bin = { "openapi-ts": "./bin/run.js" };

//#endregion
//#region src/cli.ts
const stringToBoolean = (value) => {
	if (value === "true") return true;
	if (value === "false") return false;
	return value;
};
const processParams = (obj, booleanKeys) => {
	for (const key of booleanKeys) {
		const value = obj[key];
		if (typeof value === "string") {
			const parsedValue = stringToBoolean(value);
			delete obj[key];
			obj[key] = parsedValue;
		}
	}
	return obj;
};
const runCli = async () => {
	const params = new Command().name(Object.keys(bin)[0]).usage("[options]").version(version).option("-c, --client <value>", "HTTP client to generate").option("-d, --debug", "Set log level to debug").option("--dry-run [value]", "Skip writing files to disk?").option("-f, --file [value]", "Path to the config file").option("-i, --input <value>", "OpenAPI specification (path, url, or string content)").option("-l, --logs [value]", "Logs folder").option("-o, --output <value>", "Output folder").option("-p, --plugins [value...]", "List of plugins you'd like to use").option("-s, --silent", "Set log level to silent").option("--no-log-file", "Disable writing a log file. Works like --silent but without suppressing console output").option("-w, --watch [value]", "Regenerate the client when the input file changes?").parse(process.argv).opts();
	let userConfig;
	try {
		userConfig = processParams(params, ["dryRun", "logFile"]);
		if (userConfig.file) {
			userConfig.configFile = userConfig.file;
			delete userConfig.file;
		}
		if (params.plugins === true) userConfig.plugins = [];
		else if (params.plugins) userConfig.plugins = params.plugins;
		else if (userConfig.client) userConfig.plugins = ["@hey-api/typescript", "@hey-api/sdk"];
		if (userConfig.client) {
			userConfig.plugins.push(userConfig.client);
			delete userConfig.client;
		}
		userConfig.logs = userConfig.logs ? { path: userConfig.logs } : {};
		if (userConfig.debug) {
			userConfig.logs.level = "debug";
			delete userConfig.debug;
		} else if (userConfig.silent) {
			userConfig.logs.level = "silent";
			delete userConfig.silent;
		}
		userConfig.logs.file = userConfig.logFile;
		delete userConfig.logFile;
		if (typeof params.watch === "string") userConfig.watch = Number.parseInt(params.watch, 10);
		if (!Object.keys(userConfig.logs).length) delete userConfig.logs;
		if (!(await createClient(userConfig))[0]?.config.input.some((input) => input.watch && input.watch.enabled)) process.exit(0);
	} catch {
		process.exit(1);
	}
};

//#endregion
//#region src/run.ts
runCli();

//#endregion
export {  };
//# sourceMappingURL=run.mjs.map