@forzalabs/remora
Version:
A powerful CLI tool for seamless data translation.
78 lines (77 loc) ⢠5.37 kB
JavaScript
;
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;