import '@johnlindquist/kit'import { glob } from 'glob'
import { readFile, writeFile } from 'node:fs/promises'
import { format } from 'prettier'
const filePatterns = await fields([
{
label: 'File Patterns (comma-separated)',
placeholder: '*.js, *.ts, *.json',
},
{
label: 'Prettier Config File (optional)',
placeholder: '.prettierrc.json',
type: 'text',
},
])
const [patterns, prettierConfig] = filePatterns
if (!patterns) {
exit()
}
const files = await glob(patterns.split(',').map(p => p.trim()), { absolute: true })
if (files.length === 0) {
await div('No files matched the provided pattern.')
exit()
}
let options: any = {}
if (prettierConfig && await pathExists(prettierConfig)) {
try {
const configFileContent = await readFile(prettierConfig, 'utf-8')
options = JSON.parse(configFileContent)
} catch (error) {
console.error(`Error parsing prettier config: ${prettierConfig}`, error)
await div(`Error parsing prettier config: ${prettierConfig}`)
}
}
for (const file of files) {
try {
const content = await readFile(file, 'utf-8')
const formatted = await format(content, { ...options, filepath: file })
await writeFile(file, formatted)
console.log(`Formatted: ${file}`)
} catch (error) {
console.error(`Error formatting ${file}:`, error)
await div(`Error formatting ${file}: ${error}`)
}
}
await div('Code formatting complete.')