|
|
@@ -2,6 +2,7 @@ import { Bus } from "../bus"
|
|
|
import { File } from "../file"
|
|
|
import { Log } from "../util/log"
|
|
|
import path from "path"
|
|
|
+import z from "zod"
|
|
|
|
|
|
import * as Formatter from "./formatter"
|
|
|
import { Config } from "../config/config"
|
|
|
@@ -11,6 +12,17 @@ import { Instance } from "../project/instance"
|
|
|
export namespace Format {
|
|
|
const log = Log.create({ service: "format" })
|
|
|
|
|
|
+ export const Status = z
|
|
|
+ .object({
|
|
|
+ name: z.string(),
|
|
|
+ extensions: z.string().array(),
|
|
|
+ enabled: z.boolean(),
|
|
|
+ })
|
|
|
+ .meta({
|
|
|
+ ref: "FormatterStatus",
|
|
|
+ })
|
|
|
+ export type Status = z.infer<typeof Status>
|
|
|
+
|
|
|
const state = Instance.state(async () => {
|
|
|
const enabled: Record<string, boolean> = {}
|
|
|
const cfg = await Config.get()
|
|
|
@@ -62,6 +74,20 @@ export namespace Format {
|
|
|
return result
|
|
|
}
|
|
|
|
|
|
+ export async function status() {
|
|
|
+ const s = await state()
|
|
|
+ const result: Status[] = []
|
|
|
+ for (const formatter of Object.values(s.formatters)) {
|
|
|
+ const enabled = await isEnabled(formatter)
|
|
|
+ result.push({
|
|
|
+ name: formatter.name,
|
|
|
+ extensions: formatter.extensions,
|
|
|
+ enabled,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return result
|
|
|
+ }
|
|
|
+
|
|
|
export function init() {
|
|
|
log.info("init")
|
|
|
Bus.subscribe(File.Event.Edited, async (payload) => {
|