Skip to content

UnixBuilderImpl

Defined in: packages/core/src/builder.ts:336

Concrete implementation of UnixBuilder.

Produced by Unix — do not instantiate directly. Exported so implementation code inside @fishnet/* (runtimes, test helpers) can type fresh builder instances; consumer code should reach this class only through Unix or UnixImage.extend.

Immutable: every method (use, mount, bin, env, file, service, run, catalog) returns a new UnixBuilderImpl with the extension appended. The original is never modified, so forking a base builder to produce variants is safe. .build() is the terminal operation — it merges all accumulated extensions, builds the frozen root filesystem, replays every .run() step (memoized via the build cache), and returns a UnixImageImpl.

Method-level contracts (use, mount, …) are documented on UnixBuilder. This class inherits those contracts and adds the immutability / cache-reuse guarantees described above.

import { Unix, stdSystem } from '@fishnet/core'
const base = Unix().use(stdSystem()) // UnixBuilderImpl
const withDb = base.use(sqlite()) // base is untouched
const image = await withDb.build() // UnixImageImpl

new UnixBuilderImpl(init?): UnixBuilderImpl

Defined in: packages/core/src/builder.ts:345

BuilderInit

UnixBuilderImpl

bin(name, fn): UnixBuilder

Defined in: packages/core/src/builder.ts:380

Sugar for .use({ bins: { [name]: fn } }).

string

BinFunction

UnixBuilder

UnixBuilder.bin


boot(runtime, opts?): Promise<UnixInstance>

Defined in: packages/core/src/builder.ts:452

Boot an instance from the built image. Requires a runtime (e.g. testRuntime(), nodeRuntime()).

BootRuntime

BootOpts

Promise<UnixInstance>

UnixBuilder.boot


build(): Promise<UnixImage>

Defined in: packages/core/src/builder.ts:404

Promise<UnixImage>

UnixBuilder.build


catalog(name, factory): UnixBuilder

Defined in: packages/core/src/builder.ts:400

string

() => Extension

UnixBuilder

UnixBuilder.catalog


env(key, value): UnixBuilder

Defined in: packages/core/src/builder.ts:384

Sugar for .use({ env: { [key]: value } }).

string

string

UnixBuilder

UnixBuilder.env


file(path, content): UnixBuilder

Defined in: packages/core/src/builder.ts:388

Sugar for .use({ files: { [path]: content } }).

string

string

UnixBuilder

UnixBuilder.file


mount(path, server): UnixBuilder

Defined in: packages/core/src/builder.ts:376

Sugar for .use({ mounts: { [path]: server } }).

string

Fileserver

UnixBuilder

UnixBuilder.mount


run(command): UnixBuilder

Defined in: packages/core/src/builder.ts:396

Record a shell command to execute at build time. Executed sequentially by .build().

string

UnixBuilder

UnixBuilder.run


service(def): UnixBuilder

Defined in: packages/core/src/builder.ts:392

Sugar for .use({ services: [def] }).

ServiceDef

UnixBuilder

UnixBuilder.service


use(ext): UnixBuilder

Defined in: packages/core/src/builder.ts:372

Compose an Extension into the builder. Returns a new builder.

Extension

UnixBuilder

UnixBuilder.use