# tools/core/generators/fixture.generator.ts

> 23 lines of code and 4 definitions.

Tree: Coordination tree
Language: typescript
Canonical: https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-generators-fixture-generator-ts
Source text: https://banes-lab.com/assets/sources/source.a8841bb17b1ea726bcea653398eadf9194a1e420611149a6438e0d74e4f2d5a7.generated.txt

## Definitions

- `FixtureTree` (interface_declaration, line 5, exported)
- `growFixtureTree` (lexical_declaration, line 10, exported)
- `root` (lexical_declaration, line 13, exported)
- `target` (lexical_declaration, line 16, exported)

## Source

```typescript
import { dirname, resolve } from "node:path";
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
import { tmpdir } from "node:os";

export interface FixtureTree {
    readonly root: string;
    readonly release: () => void;
}

export const growFixtureTree = function growFixtureTree(
    samples: readonly { path: string; text: string }[],
): FixtureTree {
    const root = mkdtempSync(resolve(tmpdir(), "govern-fixture-"));

    for (const sample of samples) {
        const target = resolve(root, sample.path);
        mkdirSync(dirname(target), { recursive: true });
        writeFileSync(target, sample.text, "utf8");
    }

    return {
        release: (): void => {
            rmSync(root, { force: true, recursive: true });
        },
        root,
    };
};
```
