code cleanup
This commit is contained in:
parent
59676111da
commit
58dd1d2bf6
|
@ -12,4 +12,4 @@ if (requiredMajorVersion < minimumMajorVersion) {
|
|||
process.exit(1);
|
||||
}
|
||||
|
||||
import('./src/main.js').then(({ main }) => main());
|
||||
import('./src/index.js').then(({ main }) => main());
|
|
@ -2,6 +2,7 @@ export interface Context {
|
|||
dryRun: boolean;
|
||||
installDeps: boolean;
|
||||
initGitRepo: boolean;
|
||||
template: string;
|
||||
pkgManager: "npm" | "yarn" | "pnpm" | null;
|
||||
args: string[];
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@matthiesenxyz/create-astro-ghostcms",
|
||||
"version": "0.0.1",
|
||||
"version": "0.0.2",
|
||||
"description": "Utility to quickly get started with our Integration and astro",
|
||||
"type": "module",
|
||||
"main": "./create-astro-ghostcms.mjs",
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 32 KiB |
|
@ -3,9 +3,9 @@ import arg from "arg";
|
|||
import fse from "fs-extra";
|
||||
import * as p from "@clack/prompts";
|
||||
import c from 'picocolors';
|
||||
import { exitPrompt, getModulePaths, isPackageManager } from "./lib/utils.js";
|
||||
import { createBasic } from "./runners/basic.js";
|
||||
import { createStarterKit } from "./runners/starterkit.js";
|
||||
import { exitPrompt, getModulePaths, isPackageManager } from "./utils";
|
||||
import { createBasic } from "./scripts/basic.js";
|
||||
//import { createStarterKit } from "./scripts/starterkit.js";
|
||||
|
||||
|
||||
export async function main() {
|
||||
|
@ -89,6 +89,7 @@ export async function main() {
|
|||
dryRun,
|
||||
installDeps,
|
||||
initGitRepo,
|
||||
template: template,
|
||||
pkgManager: isPackageManager(pkgManager) ? pkgManager : null,
|
||||
args,
|
||||
};
|
||||
|
@ -99,7 +100,7 @@ export async function main() {
|
|||
await createBasic(ctx).catch(console.error);
|
||||
break;
|
||||
case "starterkit":
|
||||
await createStarterKit(ctx).catch(console.error);
|
||||
await createBasic(ctx).catch(console.error);
|
||||
break;
|
||||
default:
|
||||
throw new Error(c.red(`Unknown template: ${template}`));
|
||||
|
@ -122,7 +123,7 @@ function isValidTemplate(template) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @typedef {import("../types").Template} Template
|
||||
* @typedef {import("../types").PackageManager} PackageManager
|
||||
* @typedef {import("../types").Context} Context
|
||||
* @typedef {import("../types.js").Template} Template
|
||||
* @typedef {import("../types.js").PackageManager} PackageManager
|
||||
* @typedef {import("../types.js").Context} Context
|
||||
*/
|
|
@ -1,61 +0,0 @@
|
|||
import path from "node:path";
|
||||
import os from "node:os";
|
||||
import * as p from "@clack/prompts";
|
||||
import c from "picocolors";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
/**
|
||||
* @param {string} url
|
||||
*/
|
||||
export function getModulePaths(url) {
|
||||
const pathname = fileURLToPath(url);
|
||||
const parts = pathname.split("/");
|
||||
const basename = parts.pop();
|
||||
const dirname = parts.join(path.sep);
|
||||
return { pathname, dirname, basename };
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {never}
|
||||
*/
|
||||
export function exitPrompt() {
|
||||
p.cancel(c.red("Operation Cancelled"));
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} str
|
||||
*/
|
||||
export function isPathname(str) {
|
||||
return str.includes(path.sep);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} pathname
|
||||
*/
|
||||
export function normalizePath(pathname) {
|
||||
if (os.platform() === "win32") {
|
||||
return path.win32.normalize(pathname);
|
||||
}
|
||||
return path.normalize(pathname);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} ms
|
||||
*/
|
||||
export async function wait(ms) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} str
|
||||
* @returns {str is PackageManager}
|
||||
*/
|
||||
export function isPackageManager(str) {
|
||||
return str === "npm" || str === "yarn" || str === "pnpm";
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {import("../../types").PackageManager} PackageManager
|
||||
*/
|
|
@ -4,13 +4,13 @@ import c from 'picocolors';
|
|||
import * as p from "@clack/prompts";
|
||||
import { execa } from "execa";
|
||||
import { exitPrompt, getModulePaths, isPathname,
|
||||
normalizePath, wait } from "../lib/utils.js";
|
||||
normalizePath, wait } from "../utils";
|
||||
|
||||
const runnerName = "basic";
|
||||
//const runnerName = "basic";
|
||||
|
||||
/** @param {Context} ctx */
|
||||
export async function createBasic(ctx) {
|
||||
let { args, dryRun, initGitRepo, installDeps } = ctx;
|
||||
let { args, dryRun, initGitRepo, installDeps, template } = ctx;
|
||||
|
||||
const s = p.spinner();
|
||||
let cwd = process.cwd();
|
||||
|
@ -30,7 +30,7 @@ export async function createBasic(ctx) {
|
|||
if (dryRun) {
|
||||
await wait(2000);
|
||||
} else {
|
||||
await createApp(project.name, project.pathname, {
|
||||
await createApp(project.name, project.pathname, template, {
|
||||
onError(error) {
|
||||
s.stop(`${c.red('Failed to create new project')}`);
|
||||
p.cancel();
|
||||
|
@ -102,13 +102,14 @@ export async function createBasic(ctx) {
|
|||
*
|
||||
* @param {string} projectName
|
||||
* @param {string} projectPathname
|
||||
* @param {string} template
|
||||
* @param {{ onError: (err: unknown) => any }} opts
|
||||
*/
|
||||
async function createApp(projectName, projectPathname, { onError }) {
|
||||
async function createApp(projectName, projectPathname, template, { onError }) {
|
||||
const { pathname } = getModulePaths(import.meta.url);
|
||||
const templatesDir = path.resolve(pathname, "..", "..", "templates");
|
||||
const sharedTemplateDir = path.join(templatesDir, "_shared");
|
||||
const runnerTemplateDir = path.join(templatesDir, runnerName);
|
||||
const runnerTemplateDir = path.join(templatesDir, template);
|
||||
|
||||
await fse.ensureDir(projectPathname);
|
||||
|
|
@ -4,7 +4,7 @@ import c from 'picocolors';
|
|||
import * as p from "@clack/prompts";
|
||||
import { execa } from "execa";
|
||||
import { exitPrompt, getModulePaths, isPathname,
|
||||
normalizePath, wait } from "../lib/utils.js";
|
||||
normalizePath, wait } from "../utils";
|
||||
|
||||
const runnerName = "starterkit";
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
import * as p from "@clack/prompts";
|
||||
import c from "picocolors";
|
||||
|
||||
/**
|
||||
* @returns {never}
|
||||
*/
|
||||
export function exitPrompt() {
|
||||
p.cancel(c.red("Operation Cancelled"));
|
||||
process.exit(0);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
/**
|
||||
* @param {string} url
|
||||
*/
|
||||
export function getModulePaths(url) {
|
||||
const pathname = fileURLToPath(url);
|
||||
const parts = pathname.split("/");
|
||||
const basename = parts.pop();
|
||||
const dirname = parts.join(path.sep);
|
||||
return { pathname, dirname, basename };
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
export { exitPrompt } from "./exitPrompt";
|
||||
export { getModulePaths } from "./getModulePaths";
|
||||
export { isPackageManager } from "./isPackageManager";
|
||||
export { isPathname } from "./isPathname";
|
||||
export { normalizePath } from "./normalizePath";
|
||||
export { wait } from "./wait";
|
|
@ -0,0 +1,12 @@
|
|||
/**
|
||||
*
|
||||
* @param {string} str
|
||||
* @returns {str is PackageManager}
|
||||
*/
|
||||
export function isPackageManager(str) {
|
||||
return str === "npm" || str === "yarn" || str === "pnpm";
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {import("../../types").PackageManager} PackageManager
|
||||
*/
|
|
@ -0,0 +1,8 @@
|
|||
import path from "node:path";
|
||||
|
||||
/**
|
||||
* @param {string} str
|
||||
*/
|
||||
export function isPathname(str) {
|
||||
return str.includes(path.sep);
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
import path from "node:path";
|
||||
import os from "node:os";
|
||||
|
||||
/**
|
||||
* @param {string} pathname
|
||||
*/
|
||||
export function normalizePath(pathname) {
|
||||
if (os.platform() === "win32") {
|
||||
return path.win32.normalize(pathname);
|
||||
}
|
||||
return path.normalize(pathname);
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
/**
|
||||
* @param {number} ms
|
||||
*/
|
||||
export async function wait(ms) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
Loading…
Reference in New Issue