UNPKG

faceit-visa

Version:

A lightweight OAuth2 authentication library for FACEIT integration

159 lines (154 loc) • 6.18 kB
#!/usr/bin/env node "use strict"; 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; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); const fs = __importStar(require("fs")); const path = __importStar(require("path")); class FaceitVisaCLI { constructor() { this.templatesPath = path.join(__dirname, '../templates'); } async generate(options) { const { framework, outputDir = process.cwd() } = options; console.log(`šŸš€ Generating ${framework} template files...`); const templatePath = path.join(this.templatesPath, framework); if (!fs.existsSync(templatePath)) { console.error(`āŒ Template not found: ${framework}`); process.exit(1); } try { await this.copyTemplate(templatePath, outputDir); console.log('āœ… Template files generated successfully!'); console.log('\nšŸ“ Next steps:'); console.log('1. Install faceit-visa: npm install faceit-visa'); console.log('2. Copy .env.example to .env.local and fill in your FACEIT credentials'); console.log('3. Set up your FACEIT app redirect URI'); console.log('4. Start your development server'); console.log('\nšŸ“– Check the generated README.md for detailed setup instructions.'); } catch (error) { console.error('āŒ Error generating template:', error); process.exit(1); } } async copyTemplate(templatePath, outputDir) { const entries = fs.readdirSync(templatePath, { withFileTypes: true }); for (const entry of entries) { const srcPath = path.join(templatePath, entry.name); const destPath = path.join(outputDir, entry.name); if (entry.isDirectory()) { // Create directory if it doesn't exist if (!fs.existsSync(destPath)) { fs.mkdirSync(destPath, { recursive: true }); } // Recursively copy directory contents await this.copyTemplate(srcPath, destPath); } else { // Create destination directory if it doesn't exist const destDir = path.dirname(destPath); if (!fs.existsSync(destDir)) { fs.mkdirSync(destDir, { recursive: true }); } // Copy file fs.copyFileSync(srcPath, destPath); console.log(`šŸ“„ Created: ${path.relative(outputDir, destPath)}`); } } } async listTemplates() { console.log('šŸ“‹ Available templates:'); const templates = fs.readdirSync(this.templatesPath); templates.forEach(template => { console.log(` • ${template}`); }); } showHelp() { console.log(` šŸŽ® FaceitVisa CLI - Generate OAuth2 integration files Usage: npx faceit-visa generate <framework> [options] npx faceit-visa list npx faceit-visa help Commands: generate <framework> Generate template files for the specified framework list List available templates help Show this help message Frameworks: nextjs-app-router Next.js App Router with TypeScript (HTTPS support) vanilla HTML/CSS/JS with Express.js backend (universal) php Pure PHP implementation (no dependencies) express Express.js template with TypeScript (coming soon) Options: --output-dir, -o Output directory (default: current directory) Examples: npx faceit-visa generate nextjs-app-router npx faceit-visa generate vanilla --output-dir ./my-website npx faceit-visa generate php --output-dir ./php-site npx faceit-visa list `); } } // Parse command line arguments const cli = new FaceitVisaCLI(); const args = process.argv.slice(2); const command = args[0]; async function main() { switch (command) { case 'generate': const framework = args[1]; const outputDirIndex = args.indexOf('--output-dir') || args.indexOf('-o'); const outputDir = outputDirIndex !== -1 ? args[outputDirIndex + 1] : undefined; if (!framework) { console.error('āŒ Please specify a framework. Use "npx faceit-visa help" for usage.'); process.exit(1); } await cli.generate({ framework, outputDir }); break; case 'list': await cli.listTemplates(); break; case 'help': case '--help': case '-h': cli.showHelp(); break; default: console.error('āŒ Unknown command. Use "npx faceit-visa help" for usage.'); process.exit(1); } } main().catch(console.error); //# sourceMappingURL=cli.js.map