dragadix
Version:
A flirty, powerful CLI experience built by Aditya š
132 lines (117 loc) ⢠3.02 kB
JavaScript
// dragadi.mjs
#!/usr/bin/env node
import inquirer from "inquirer";
import gradient from "gradient-string";
import figlet from "figlet";
import chalk from "chalk";
import boxen from "boxen";
import chalkAnimation from "chalk-animation";
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";
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function intro() {
console.clear();
for (let i = 1; i <= 3; i++) {
console.clear();
console.log(`ā Initializing DragAdi CLI${'.'.repeat(i)}`);
await sleep(1000);
}
console.clear();
console.log("ā” Boot sequence complete! Loading assets...");
await sleep(2000);
console.clear();
const rainbow = chalkAnimation.rainbow(
figlet.textSync("DragAdi", { font: "Slant" })
);
await sleep(3000);
rainbow.stop();
console.clear();
console.log(
gradient.passion(
figlet.textSync("DragAdi", { horizontalLayout: "default" })
)
);
console.log();
console.log(
boxen(chalk.bold("Welcome, Aditya š Ready to code & flirt?"), {
padding: 1,
borderStyle: "round",
borderColor: "magenta",
})
);
await sleep(2000);
}
async function mainMenu() {
const choices = [
"š Home CLI",
"šØāš» About DragAdi",
"š Social Networkings",
"š¼ Portfolio Projects",
"š Resume",
"š¤ Talk to Gemini AI",
"š Fun Zone",
"āļø CLI Settings",
"ā Rage Quit",
];
const answer = await inquirer.prompt([
{
type: "list",
name: "menu",
message: chalk.cyan("š® Choose your Mode:"),
choices,
},
]);
console.clear();
await intro();
switch (answer.menu) {
case "š Home CLI":
await showHome();
break;
case "šØāš» About DragAdi":
await showAbout();
break;
case "š Social Networkings":
await showSocials();
break;
case "š¼ Portfolio Projects":
await showProjects();
break;
case "š Resume":
await showResume();
break;
case "š¤ Talk to Gemini AI":
await startAIChat();
break;
case "š Fun Zone":
await startFunZone();
break;
case "āļø CLI Settings":
await settingsMenu();
break;
case "ā Rage Quit":
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();
})();