initia-devaxis
Version:
CLI to create full-stack React projects with Next.js (REST) or RedwoodJS (GraphQL)
141 lines • 5.09 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const boxen_1 = __importDefault(require("boxen"));
const chalk_1 = __importDefault(require("chalk"));
const commander_1 = require("commander");
const figlet_1 = __importDefault(require("figlet"));
const gradient_string_1 = __importDefault(require("gradient-string"));
const packageJson = __importStar(require("../package.json"));
const init_1 = require("./commands/init");
const { version } = packageJson;
const program = new commander_1.Command();
/**
* Affiche le logo et l'en-tête de l'application
*/
function displayHeader() {
console.clear();
// Logo ASCII avec gradient
const logo = figlet_1.default.textSync("INITIA-DEVAXIS", {
font: "ANSI Shadow",
horizontalLayout: "default",
verticalLayout: "default",
});
console.log((0, gradient_string_1.default)(["#7CB929", "#066D31"]).multiline(logo));
// Informations dans un box
const info = (0, boxen_1.default)(chalk_1.default.white(`initia-devaxis v${version}\n`) +
chalk_1.default.gray("Boilerplate spécialisée pour Devaxis - Create full-stack React projects with Next.js or RedwoodJS"), {
padding: 1,
margin: { top: 1, bottom: 1 },
borderStyle: "round",
borderColor: "cyan",
textAlignment: "center",
});
console.log(info);
}
/**
* Affiche un message de succès final
*/
function displaySuccess(projectName) {
const successBox = (0, boxen_1.default)(chalk_1.default.green.bold("✓ Project created successfully!") +
"\n\n" +
chalk_1.default.white(`Your project "${projectName}" is ready to use.`) +
"\n" +
chalk_1.default.gray("Happy coding! 🚀"), {
padding: 1,
margin: { top: 1 },
borderStyle: "round",
borderColor: "green",
textAlignment: "center",
});
console.log(successBox);
}
async function main() {
try {
displayHeader();
// Configuration de la CLI
program
.name("initia")
.version(version)
.description("Professional CLI for Next.js and RedwoodJS boilerplates");
// Commandes
program
.command("init")
.description("Create a new project")
.action(async () => {
const projectName = await (0, init_1.initCommand)();
if (projectName) {
displaySuccess(projectName);
}
});
// Commande par défaut
if (process.argv.length === 2) {
const projectName = await (0, init_1.initCommand)();
if (projectName) {
displaySuccess(projectName);
}
}
else {
await program.parseAsync(process.argv);
}
}
catch (error) {
console.log((0, boxen_1.default)(chalk_1.default.red.bold("✗ Error") +
"\n\n" +
chalk_1.default.white(error instanceof Error ? error.message : String(error)), {
padding: 1,
margin: { top: 1 },
borderStyle: "round",
borderColor: "red",
}));
process.exit(1);
}
}
main().catch((error) => {
console.log((0, boxen_1.default)(chalk_1.default.red.bold("✗ Fatal Error") +
"\n\n" +
chalk_1.default.white(error instanceof Error ? error.message : String(error)), {
padding: 1,
margin: { top: 1 },
borderStyle: "round",
borderColor: "red",
}));
process.exit(1);
});
//# sourceMappingURL=index.js.map