From ee7c280ddfab427d1433a366554d7a3f0f9ff052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Generet?= Date: Wed, 27 Sep 2023 15:58:38 +0200 Subject: [PATCH] Scaffold ask to create template --- cli/tasks/scaffold-wp/builders/page.js | 33 +++++++++++++++++-- .../pages/page-template.php.template | 7 ++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 cli/tasks/scaffold-wp/templates/pages/page-template.php.template diff --git a/cli/tasks/scaffold-wp/builders/page.js b/cli/tasks/scaffold-wp/builders/page.js index 76a8381..85e3bd3 100644 --- a/cli/tasks/scaffold-wp/builders/page.js +++ b/cli/tasks/scaffold-wp/builders/page.js @@ -14,6 +14,16 @@ const _askPageName = () => { ]) } +const _askIfTemplate = () => { + return Inquirer.prompt([ + { + type: "confirm", + message: "Create a template for this page ?", + name: "createTemplate", + }, + ]) +} + /** * WP Page Builder * @param pagePath, @@ -21,7 +31,7 @@ const _askPageName = () => { * @private */ -const _pageBuilder = async ({ pagePath, pageName }) => { +const _pageBuilder = async ({ pagePath, pageName, createTemplate }) => { // choose between page and page type const camelCasePageName = changeCase.camelCase(pageName), pascalCasePageName = changeCase.pascalCase(pageName) @@ -39,24 +49,42 @@ const _pageBuilder = async ({ pagePath, pageName }) => { destinationFilePath: `${pagePath}/setup.php`, replaceExpressions: { camelCasePageName, pascalCasePageName }, }) + + if(createTemplate) { + // template setup + await createFile({ + templateFilePath: `${config.wpTemplatesPath}/pages/page-template.php.template`, + destinationFilePath: `${config.wpTheme}/template-${pascalCasePageName}.php`, + replaceExpressions: { camelCasePageName, pascalCasePageName }, + }) + } } const buildPage = () => { return new Promise(async (resolve) => { let pageFolder = `${config.wpTheme}/pages` + let rootFolder = `${config.wpTheme}` // Get page name let pageName = "" + let createTemplate; + await _askPageName().then((answer) => { pageName = changeCase.paramCase(answer.pageName) }) + await _askIfTemplate().then((answer) => { + createTemplate = answer.createTemplate + }) + let upperPageName = changeCase.pascalCase(pageName) // Base path of the page (no extension at the end here) let pagePath = `${pageFolder}/${upperPageName}` logs.note(`Page ${upperPageName} will be created here: ${pagePath}`) + if (createTemplate) logs.note(`Template will be created here: ${rootFolder}`) + /** * Build page */ @@ -64,13 +92,14 @@ const buildPage = () => { await _pageBuilder({ pagePath, pageName, + createTemplate }) } catch (e) { logs.error(e) } // final log - logs.done("Page created.") + createTemplate ? logs.done("Page and template created.") : logs.done("Page created.") resolve() }) } diff --git a/cli/tasks/scaffold-wp/templates/pages/page-template.php.template b/cli/tasks/scaffold-wp/templates/pages/page-template.php.template new file mode 100644 index 0000000..0a858a4 --- /dev/null +++ b/cli/tasks/scaffold-wp/templates/pages/page-template.php.template @@ -0,0 +1,7 @@ +