@zambelz/zhc
Version:
API Management Tools
90 lines (72 loc) • 2.02 kB
text/typescript
import path from "node:path"
import { ROOT_PATH } from "../../utils/global"
import { createProfile } from "../../utils/profile"
import { getConfigData, getProfileConfig } from "../../utils/config"
import { logError, logInfo } from "../../utils/logger"
import { createDirectory, createFile } from "../../utils/fileOperation"
const initConfig = () => {
try {
logInfo("Initializing config...")
createDirectory({ path: ROOT_PATH })
createFile({
path: path.join(ROOT_PATH, "config.jsonc"),
content: JSON.stringify({
"defaultProfile": "default",
"editor": "nvim"
}, null, 2)
})
createFile({
path: path.join(ROOT_PATH, ".editorconfig"),
content: `# Editor configuration, see http://editorconfig.org
root = false
[*]
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true
[*.jsonc]
indent_style = space
indent_size = 2
`
})
createDirectory({ path: path.join(ROOT_PATH, "scripts") })
try {
const newProfile = createProfile("default")
logInfo("New profile created at: ", newProfile)
} catch (err) {
logError(`${err}`)
}
logInfo("Config initialized")
} catch (err) {
logError(`${err}`)
}
}
const setConfig = async (opt: Record<string, string | boolean>) => {
if (typeof opt?.set !== "string" || opt?.set === "") {
logError("No input provided")
return
}
const configInput = opt?.set as string
const configs = configInput.split(":")
const isGlobal = opt?.global || false
if (isGlobal) {
console.log("Setting global config...")
return
}
// TODO: add functionality to set profile config
// globally or locally
console.log("TODO: Set profile config")
}
const viewCurrentConfig = async () => {
const configData = getConfigData()
const profileConfig = getProfileConfig()
const output: Record<string, any> = {
...configData,
...profileConfig
}
console.log(output)
}
export {
initConfig,
setConfig,
viewCurrentConfig
}