71 lines
1.5 KiB
TypeScript
71 lines
1.5 KiB
TypeScript
/**
|
|
* EcoOS ISO Builder
|
|
*
|
|
* CLI for building custom Ubuntu ISO with EcoOS daemon
|
|
*/
|
|
|
|
import { build } from './ts/index.ts';
|
|
|
|
const command = Deno.args[0];
|
|
|
|
switch (command) {
|
|
case 'build':
|
|
await build();
|
|
break;
|
|
|
|
case 'clean':
|
|
console.log('Cleaning build artifacts...');
|
|
try {
|
|
await Deno.remove('./output', { recursive: true });
|
|
await Deno.remove('./build', { recursive: true });
|
|
console.log('Clean complete.');
|
|
} catch {
|
|
console.log('Nothing to clean.');
|
|
}
|
|
break;
|
|
|
|
case 'test-qemu':
|
|
console.log('Testing ISO in QEMU...');
|
|
const isoPath = './output/ecoos.iso';
|
|
try {
|
|
await Deno.stat(isoPath);
|
|
} catch {
|
|
console.error('ISO not found. Run "deno task build" first.');
|
|
Deno.exit(1);
|
|
}
|
|
|
|
const qemu = new Deno.Command('qemu-system-x86_64', {
|
|
args: [
|
|
'-enable-kvm',
|
|
'-m', '4G',
|
|
'-cpu', 'host',
|
|
'-smp', '2',
|
|
'-cdrom', isoPath,
|
|
'-boot', 'd',
|
|
'-vga', 'virtio',
|
|
'-display', 'gtk',
|
|
'-device', 'usb-tablet',
|
|
'-nic', 'user,hostfwd=tcp::3006-:3006',
|
|
],
|
|
stdout: 'inherit',
|
|
stderr: 'inherit',
|
|
});
|
|
await qemu.spawn().status;
|
|
break;
|
|
|
|
default:
|
|
console.log(`
|
|
EcoOS ISO Builder
|
|
|
|
Usage:
|
|
deno task build Build the ISO
|
|
deno task clean Clean build artifacts
|
|
deno task test-qemu Test ISO in QEMU
|
|
|
|
Requirements:
|
|
- Ubuntu 24.04+ host
|
|
- live-build, debootstrap, xorriso installed
|
|
- sudo access for live-build
|
|
`);
|
|
}
|