dragadix
Version:
A flirty, powerful CLI experience built by Aditya š
107 lines (96 loc) ⢠3.2 kB
JavaScript
import inquirer from "inquirer";
import gradient from "gradient-string";
import figlet from "figlet";
import chalk from "chalk";
import boxen from "boxen";
import { showHome } from "./commands/home.js";
import { showAbout } from "./commands/about.js";
import { showSocials } from "./commands/social.js";
import { showProjects } from "./commands/projects.js";
import { showSkills } from "./commands/skills.js";
import { showResume } from "./commands/resume.js";
import { startAIChat } from "./commands/ai.js";
import { startFunZone } from "./commands/fun.js";
import { settingsMenu } from "./commands/settings.js";
import { sayBye } from "./commands/exit.js";
async function intro() {
console.clear();
const msg = figlet.textSync("DragAdi", {
font: "Slant",
horizontalLayout: "default",
verticalLayout: "default",
});
console.log(gradient.passion(msg));
console.log(boxen(chalk.bold("Welcome, Aditya š Ready to code & flirt?"), {
padding: 1,
borderStyle: "round",
borderColor: "magenta",
}));
}
(async () => {
try {
const fs = await import("fs");
const chalk = (await import("chalk")).default;
const arg = process.argv[2];
if (arg && !arg.startsWith("--")) {
const file =
fs.existsSync(`./assets/${arg}.txt`)
? `./assets/${arg}.txt`
: fs.existsSync(`./assets/${arg}.art`)
? `./assets/${arg}.art`
: null;
if (file) {
const content = fs.readFileSync(file, "utf-8");
console.clear();
console.log(chalk.cyanBright(content));
console.log(chalk.magentaBright(`\nš You unlocked: "${arg}" š\n`));
process.exit(0);
} else {
console.log(chalk.redBright(`\nš«¢ Nothing sexy found for "${arg}"... try another code š\n`));
process.exit(1);
}
}
} catch (e) {
// silently fail if anything breaks, don't block rest of CLI
}
})();
async function mainMenu() {
const answer = await inquirer.prompt([
{
type: "list",
name: "menu",
message: chalk.cyan("Choose your vibe, babe~ š"),
choices: [
"š Home",
"š¤ About Me",
"š Social Links",
"š» Projects",
"š§ Skills & Stack",
"š Resume / CV",
"š¬ AI Chat Mode",
"š Fun Zone",
"āļø Settings",
"šŖ Exit",
],
},
]);
switch (answer.menu) {
case "š Home": await showHome(); break;
case "š¤ About Me": await showAbout(); break;
case "š Social Links": await showSocials(); break;
case "š» Projects": await showProjects(); break;
case "š§ Skills & Stack": await showSkills(); break;
case "š Resume / CV": await showResume(); break;
case "š¬ AI Chat Mode": await startAIChat(); break;
case "š Fun Zone": await startFunZone(); break;
case "āļø Settings": await settingsMenu(); break;
case "šŖ Exit": await sayBye(); return;
}
await inquirer.prompt([{ type: "input", name: "return", message: chalk.gray("\nā©ļø Press Enter to return...") }]);
await mainMenu();
}
(async () => {
await intro();
await mainMenu();
})();