UNPKG

@forzalabs/remora

Version:

A powerful CLI tool for seamless data translation.

78 lines (77 loc) • 5.37 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = void 0; const chalk_1 = __importDefault(require("chalk")); const fs_extra_1 = __importDefault(require("fs-extra")); const ora_1 = __importDefault(require("ora")); const path_1 = __importDefault(require("path")); const init = () => __awaiter(void 0, void 0, void 0, function* () { // TODO init single folder console.log(chalk_1.default.blue.bold('šŸ“¦ Initializing your application...')); try { const spinner = (0, ora_1.default)('Creating configuration files...').start(); const directories = [ 'remora', 'remora/consumers', 'remora/producers', 'remora/schemas', 'remora/sources' ]; const defaultSource = fs_extra_1.default.readFileSync(path_1.default.join(__dirname, `../documentation/default_resources/source.json`), 'utf-8'); const defaultConsumer = fs_extra_1.default.readFileSync(path_1.default.join(__dirname, `../documentation/default_resources/consumer.json`), 'utf-8'); const defaultProducer = fs_extra_1.default.readFileSync(path_1.default.join(__dirname, `../documentation/default_resources/producer.json`), 'utf-8'); // const defaultSchema = fs.readFileSync(path.join(__dirname, `../documentation/default_resources/schema.json`), 'utf-8') const defaultRemoraProject = fs_extra_1.default.readFileSync(path_1.default.join(__dirname, `../documentation/default_resources/project.json`), 'utf-8'); const readme = fs_extra_1.default.readFileSync(path_1.default.join(__dirname, `../documentation/README.md`), 'utf-8'); const files = [ { path: 'remora/sources/.gitkeep', content: '' }, { path: 'remora/sources/default-source.json', content: defaultSource }, { path: 'remora/consumers/.gitkeep', content: '' }, { path: 'remora/consumers/default-consumer.json', content: defaultConsumer }, { path: 'remora/producers/.gitkeep', content: '' }, { path: 'remora/producers/default-producer.json', content: defaultProducer }, { path: 'remora/schemas/.gitkeep', content: '' }, { path: 'remora/project.json', content: defaultRemoraProject }, { path: 'remora/README.md', content: readme } ]; for (let i = 0; i < directories.length; i++) { const dir = directories[i]; yield fs_extra_1.default.ensureDir(dir); } for (let i = 0; i < files.length; i++) { const file = files[i]; yield fs_extra_1.default.ensureFile(file.path); yield fs_extra_1.default.writeFile(file.path, file.content); } spinner.succeed('Remora configuration files successfully created.'); console.log(chalk_1.default.green('āœ… Initialization complete!')); console.log(chalk_1.default.green('šŸ“ A new folder named ') + chalk_1.default.cyan('remora/') + chalk_1.default.green(' has been created in your project.')); console.log(chalk_1.default.green('āœļø Customize the generated configuration files inside this folder to setup Remora.')); console.log(chalk_1.default.green('\nšŸ‘£ Next steps: configure your environment variables.')); console.log(chalk_1.default.green('\nšŸ”§ Local development (add these to your .env file):')); console.log(chalk_1.default.blue('• REMORA_WORKER_HOST') + chalk_1.default.gray(' → URL of your Remora Worker instance')); console.log(chalk_1.default.blue('• REMORA_LICENCE_KEY') + chalk_1.default.gray(' → Your valid Remora license key')); console.log(chalk_1.default.green('\nšŸ” Production environment (store these in your Secret Manager):')); console.log(chalk_1.default.yellow('• ROOT_TEMP_PASSWORD') + chalk_1.default.gray(' → Temporary root password for first-time setup')); console.log(chalk_1.default.yellow('• INSTALLATION_ID') + chalk_1.default.gray(' → Unique ID for this installation instance')); console.log(chalk_1.default.yellow('• ADMIN_JWT_SECRET') + chalk_1.default.gray(' → JWT secret for admin-level access')); console.log(chalk_1.default.yellow('• JWT_SECRET') + chalk_1.default.gray(' → JWT secret for regular user authentication')); } catch (error) { console.error(chalk_1.default.red('āŒ Error during initialization:'), error instanceof Error ? error.message : String(error)); process.exit(1); } }); exports.init = init;