create-marp-slides
Version:
CLI tool for scaffolding Marp presentation projects with GitHub Pages deployment
37 lines (30 loc) • 1.03 kB
JavaScript
import inquirer from 'inquirer';
import fs from 'fs';
import path from 'path';
export async function promptForProjectName() {
const answers = await inquirer.prompt([
{
type: 'input',
name: 'projectName',
message: 'What is your project name?',
default: 'my-slides',
validate: (input) => {
if (!input.trim()) {
return 'Project name cannot be empty';
}
// Check if directory already exists
const targetDir = path.join(process.cwd(), input.trim());
if (fs.existsSync(targetDir)) {
return `Directory "${input.trim()}" already exists. Please choose a different name.`;
}
// Check for valid directory name
const validNamePattern = /^[a-zA-Z0-9-_]+$/;
if (!validNamePattern.test(input.trim())) {
return 'Project name can only contain letters, numbers, hyphens, and underscores';
}
return true;
}
}
]);
return answers.projectName.trim();
}