import { resolve } from 'pathe'
import consola from 'consola'
import * as ezSpawn from '@jsdevtools/ez-spawn'
import { writeTextFile } from '../../../src/core/fs'
export async function component(name: string) {
consola.info('Creating your component...')
try {
await writeTextFile({
path: `./components/${name}.vue`,
data: `
Some HTML block
`,
})
consola.success(`Created the ${name} component.`)
}
catch (err) {
consola.error(err)
}
}
export async function fx(name: string) {
consola.info('Creating your function...')
try {
await writeTextFile({
path: `./functions/${name}.ts`,
data: `// reactive state
const ${name} = ref(0)
// functions that mutate state and trigger updates
function increment() {
${name}.value++
}
export {
${name},
increment,
}
`,
})
consola.success(`Created the ${name} function.`)
}
catch (err) {
consola.error(err)
}
}
export async function language(language: string) {
consola.info('Creating your translation file...')
try {
await writeTextFile({
path: `./lang/${language}.yml`,
data: `button:
text: Copy
`,
})
consola.success(`Created the ${language} translation file.`)
}
catch (err) {
consola.error(err)
}
}
export async function stack(name: string) {
consola.info('Creating your stack...')
try {
const path = resolve(process.cwd(), name)
await ezSpawn.async(`giget stacks ${path}`)
consola.success('Successfully scaffolded your project.')
consola.info(`cd ${path} && pnpm install`)
}
catch (err) {
consola.error(err)
}
}