UNPKG

create-gluestack

Version:

A CLI tool for easily initialising gluestack-ui and adding components to your projects.

140 lines 5.16 kB
#! /usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.main = main; const prompts_1 = require("@clack/prompts"); const help_1 = require("./help"); const data_1 = __importDefault(require("./data")); const chalk_1 = __importDefault(require("chalk")); const utils_1 = require("./utils"); async function main(args) { console.log(chalk_1.default.bold.magenta('\nWelcome to gluestack-ui v3!')); console.log(chalk_1.default.yellow('Creating a new project with gluestack-ui v3.')); const supportedFrameworkArgs = [ '--starter-kit-expo', '--starter-kit-next', '--universal', ]; const supportedPackagemanagers = ['npm', 'yarn', 'pnpm', 'bun']; const supportedPackagemanagerArgs = supportedPackagemanagers.map((manager) => '--use-' + manager); const supportedDocumentationArgs = ['--help', '-h']; let selectedFramework = ''; let selectedPackageManager = ''; let projName = ''; if (args.length > 0) { if (args.some((arg) => supportedDocumentationArgs.includes(arg))) { (0, help_1.displayHelp)(); } if (!args[0].startsWith('-')) { projName = args[0]; args.shift(); } args.forEach((arg) => { if (supportedFrameworkArgs.includes(arg)) { selectedFramework = arg.slice(2); } else if (supportedPackagemanagerArgs.includes(arg)) { selectedPackageManager = arg.slice(6); } else { console.log(`Unsupported argument: ${arg}\n`); (0, help_1.displayHelp)(); } }); } process.on('SIGINT', function () { (0, prompts_1.cancel)('Operation cancelled.'); process.exit(0); }); let templateName = selectedFramework; if (templateName === '') { const { question, options } = data_1.default.options.framework.default; // @ts-ignore const frameworkSelection = await (0, prompts_1.select)({ message: question, options: [...options], }); // Handle cancellation if ((0, prompts_1.isCancel)(frameworkSelection)) { (0, prompts_1.cancel)('Operation cancelled.'); process.exit(0); } selectedFramework = frameworkSelection; templateName = selectedFramework; } // Ensure templateName is a string before calling includes if (typeof templateName !== 'string') { console.error('Invalid template selection'); process.exit(1); } // Universal Template coming soon... if (templateName.includes('universal')) { console.log(chalk_1.default.bgGreen('\nComing Soon...\n')); process.exit(0); } if (projName === '') { const projectNameInput = await (0, prompts_1.text)({ message: 'Enter the name of your project: ', placeholder: 'my-app', defaultValue: 'my-app', }); // Handle cancellation if ((0, prompts_1.isCancel)(projectNameInput)) { (0, prompts_1.cancel)('Operation cancelled.'); process.exit(0); } projName = projectNameInput; } templateName = `${templateName}`; if (selectedPackageManager === '') { const userPackageManager = process.env.npm_config_user_agent; if (userPackageManager && userPackageManager.includes('bun')) { selectedPackageManager = 'bun'; } else if (userPackageManager && userPackageManager.includes('pnpm')) { selectedPackageManager = 'pnpm'; } else if (userPackageManager && userPackageManager.includes('yarn')) { selectedPackageManager = 'yarn'; } else { selectedPackageManager = 'npm'; } } let message = ''; if (templateName.includes('universal')) { message = 'a universal'; } else if (templateName.includes('next')) { message = 'a next-app-router'; } else if (templateName.includes('expo')) { message = 'an expo'; } console.log(`⏳ Creating ${message} app. Hang tight, this may take a while...\n`); try { await (0, utils_1.cloneProject)(projName, templateName); if (!templateName.includes('universal')) { await (0, utils_1.installDependencies)(projName, selectedPackageManager); } await (0, utils_1.gitInit)(projName); console.log(chalk_1.default.green('\nProject created successfully in ' + projName + ' folder.\n')); } catch (error) { console.error('Failed to create project'); console.error(error.message); process.exit(1); } } // Execute the main function with command line arguments if (require.main === module) { const args = process.argv.slice(2); main(args).catch((error) => { console.error('Error:', error); process.exit(1); }); } //# sourceMappingURL=index.js.map