mirror of
https://github.com/dillonkearns/elm-pages.git
synced 2024-09-11 09:05:28 +03:00
Add CLI handler for elm-pages add command.
This commit is contained in:
parent
0c6c8610cc
commit
6258ec0b06
@ -45,5 +45,5 @@ Then you need to install the NPM pacakge from the top-level project with `npm in
|
|||||||
### Commands
|
### Commands
|
||||||
|
|
||||||
- Run a dev server - `elm-pages dev`
|
- Run a dev server - `elm-pages dev`
|
||||||
- Generate scaffolding for a new Page Template - `../../generator/src/codegen-template-module.js Slide.Number_`
|
- Generate scaffolding for a new Page Template - `elm-pages add Slide.Number_`
|
||||||
- Run a build - `elm-pages build`
|
- Run a build - `elm-pages build`
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
const build = require("./build.js");
|
const build = require("./build.js");
|
||||||
const dev = require("./dev-server.js");
|
const dev = require("./dev-server.js");
|
||||||
|
const generate = require("./codegen-template-module.js");
|
||||||
|
|
||||||
const commander = require("commander");
|
const commander = require("commander");
|
||||||
|
|
||||||
@ -29,6 +30,13 @@ async function main() {
|
|||||||
await dev.start(options);
|
await dev.start(options);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
program
|
||||||
|
.command("add <moduleName>")
|
||||||
|
.description("create a new Page Template module")
|
||||||
|
.action(async (moduleName) => {
|
||||||
|
await generate.run({ moduleName });
|
||||||
|
});
|
||||||
|
|
||||||
program.parse(process.argv);
|
program.parse(process.argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,34 +1,26 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
const fs = require("./dir-helpers.js");
|
const fs = require("./dir-helpers.js");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const routeHelpers = require("./route-codegen-helpers");
|
const routeHelpers = require("./route-codegen-helpers");
|
||||||
|
|
||||||
async function run() {
|
async function run({ moduleName }) {
|
||||||
if (process.argv.length === 3) {
|
if (!moduleName.match(/[A-Z][A-Za-z0-9]+(\.[A-Z][A-Za-z0-9])*/)) {
|
||||||
const moduleName = process.argv[2];
|
console.error("Invalid module name.");
|
||||||
if (!moduleName.match(/[A-Z][A-Za-z0-9]+(\.[A-Z][A-Za-z0-9])*/)) {
|
|
||||||
console.error("Invalid module name.");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
const content = fileContent(moduleName);
|
|
||||||
const fullFilePath = path.join(
|
|
||||||
`src/Template/`,
|
|
||||||
moduleName.replaceAll(".", "/") + ".elm"
|
|
||||||
);
|
|
||||||
await fs.tryMkdir(path.dirname(fullFilePath));
|
|
||||||
fs.writeFile(fullFilePath, content);
|
|
||||||
} else {
|
|
||||||
console.error(`Unexpected CLI options: ${process.argv}`);
|
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
const content = fileContent(moduleName);
|
||||||
|
const fullFilePath = path.join(
|
||||||
|
`src/Template/`,
|
||||||
|
moduleName.replaceAll(".", "/") + ".elm"
|
||||||
|
);
|
||||||
|
await fs.tryMkdir(path.dirname(fullFilePath));
|
||||||
|
fs.writeFile(fullFilePath, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} templateName
|
* @param {string} templateName
|
||||||
*/
|
*/
|
||||||
function fileContent(templateName) {
|
function fileContent(templateName) {
|
||||||
return `module Template.${templateName} exposing (Model, Msg, template)
|
return `module Template.${templateName} exposing (Model, Msg, StaticData, template)
|
||||||
|
|
||||||
import Element exposing (Element)
|
import Element exposing (Element)
|
||||||
import Document exposing (Document)
|
import Document exposing (Document)
|
||||||
@ -95,4 +87,4 @@ view static =
|
|||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
run();
|
module.exports = { run };
|
||||||
|
Loading…
Reference in New Issue
Block a user