mirror of
https://github.com/pockethost/pockethost.git
synced 2025-03-30 15:08:30 +00:00
70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
import chalk from 'chalk'
|
|
import yaml from 'js-yaml'
|
|
import ora from 'ora'
|
|
import { join } from 'path'
|
|
import { cwd } from 'process'
|
|
import { factory } from 'rizzdown'
|
|
|
|
export default function (plop) {
|
|
plop.setHelper('isoTimestamp', function () {
|
|
return new Date().toISOString()
|
|
})
|
|
|
|
plop.setHelper('yamlEncode', function (text) {
|
|
return yaml.dump(text).trim()
|
|
})
|
|
|
|
plop.setGenerator('blog-article', {
|
|
description: 'Generate a new blog article',
|
|
prompts: [
|
|
{
|
|
type: 'input',
|
|
name: 'synopsis',
|
|
message: '30-50 word synopsis of the news you wish to announce',
|
|
},
|
|
],
|
|
actions: [
|
|
async function (data) {
|
|
const profilePath = join(cwd(), `.rizzdown/blog`)
|
|
const subjectMatter = data.synopsis
|
|
|
|
const { generate } = factory({ profilePath, subjectMatter })
|
|
|
|
const spin = async (title, prompt) => {
|
|
const spinner = ora().start(title)
|
|
const res = await generate(prompt, {})
|
|
spinner.stopAndPersist({ symbol: chalk.green(`✔︎`) })
|
|
return res
|
|
}
|
|
|
|
data.title = await spin(
|
|
`Generating title...`,
|
|
`A title for this blog post, no more than 10 words. No exaggerations or puffery. Factual. ASCII characters only. Do not enclose in quotations.`,
|
|
)
|
|
|
|
data.description = await spin(
|
|
`Generating description...`,
|
|
`An OpenGraph summary/description for this blog post, no more than 50 words. A call to action. Factual. ASCII characters only.`,
|
|
)
|
|
|
|
data.summary = await spin(
|
|
`Generating summary...`,
|
|
`A one-paragraph introductory summary. ASCII characters only.`,
|
|
)
|
|
|
|
data.detail = await spin(
|
|
`Generating detail...`,
|
|
`A detailed analysis of the importance and use of this news. ASCII characters only.`,
|
|
)
|
|
|
|
console.log({ data })
|
|
},
|
|
{
|
|
type: 'add',
|
|
path: 'frontends/lander/content/blog/{{dashCase title}}.md',
|
|
templateFile: 'plop-templates/blog.hbs',
|
|
},
|
|
],
|
|
})
|
|
}
|