UNPKG

buntralino-cli

Version:

Buntralino unites Bun and Neutralino.js to make a simpler, lighter alternative to Electron and NW.js. Use Neutralino.js API at client and send harder tasks to Bun while keeping your development process easy.

66 lines (61 loc) 2.36 kB
import {$} from 'bun'; import fs from 'fs-extra'; import path from 'path'; import task from '../common/task'; export default async (name = 'buntralino-app', template = 'new') => { const destPath = path.join(process.cwd(), name); if (await fs.exists(destPath)) { throw new Error(`The folder ${name} already exists.`); } await task({ text: 'Copying the template', finish: 'Template copied successfully' }, fs.copy(path.join(import.meta.dir, '../templates', template), destPath) ); await Promise.all([ task({ text: 'Installing dependencies', finish: 'Dependencies installed successfully' }, (async () => { await $`bun install`.cwd(destPath).quiet(); await $`bun add buntralino buntralino-client`.cwd(destPath).quiet(); await $`bun add -d buntralino-cli`.cwd(destPath).quiet(); })()), task({ text: 'Installing Neutralino.js', finish: 'Neutralino.js installed successfully' }, $`bunx --bun @neutralinojs/neu update`.cwd(destPath).quiet()), ]); if (name !== 'buntralino-app') { await task({ text: 'Prefilling project\'s name…', finish: 'Project\'s name set successfully' }, Promise.all([ fs.readJson(path.join(destPath, 'package.json')) .then(packageJson => { packageJson.name = name; return fs.writeJson( path.join(destPath, 'package.json'), packageJson, {spaces: 2} ); }), fs.readJson(path.join(destPath, 'neutralino.config.json')) .then(neutralinoConfig => { neutralinoConfig.applicationName = name; neutralinoConfig.modes.window.title = name; neutralinoConfig.cli.binaryName = name; return fs.writeJson( path.join(destPath, 'neutralino.config.json'), neutralinoConfig, {spaces: 2} ); }) ])); } console.log(`\n🐇 Created a new Buntralino project at ${destPath}`); console.log('\nTo get started, run:\n'); console.log(` cd ${name}`); console.log(' bun run dev'); };