# tools/core/entrypoints/document.entrypoint.ts

> 28 lines of code and 8 definitions.

Tree: Coordination tree
Language: typescript
Layer: runtime
Canonical: https://banes-lab.com/anatomy/coordination#file-coordination-tools-core-entrypoints-document-entrypoint-ts
Source text: https://banes-lab.com/assets/sources/source.1733d6a19a1fc3883d6a5c20f946a6a591269bc7cde8dea0a7f5585bed4a8ee8.generated.txt

## Definitions

- `main` (lexical_declaration, line 13)
- `REPO_ROOT` (lexical_declaration, line 7)
- `SLOT` (lexical_declaration, line 9)
- `RUNTIME` (lexical_declaration, line 11)
- `declared` (lexical_declaration, line 19)
- `cwd` (lexical_declaration, line 20)
- `argv` (lexical_declaration, line 23)
- `outcome` (lexical_declaration, line 26)

## Uses

- [config/surface.config.ts](https://banes-lab.com/source/coordination/config/surface.config.ts.md)
- [tools/core/strings/document.strings.ts](https://banes-lab.com/source/coordination/tools/core/strings/document.strings.ts.md)

## Source

```typescript
import { NO_GENERATOR, generatorFailed, generatorRunning, generatorsRan } from "../strings/document.strings.ts";
import { isResolved, projectRoot, slotList, surfacePrefix } from "../../../config/surface.config.ts";

import { resolve } from "node:path";
import { spawnSync } from "node:child_process";

const REPO_ROOT = projectRoot();

const SLOT = "document_generators";

const RUNTIME = process.execPath;

const main = function main(): number {
    if (!isResolved("execution", SLOT)) {
        process.stdout.write(NO_GENERATOR);
        return 0;
    }

    const declared = slotList("execution", SLOT);
    const cwd = resolve(REPO_ROOT, surfacePrefix());

    for (const invocation of declared) {
        const argv = invocation.split(" ").filter((token) => token.length > 0);
        process.stdout.write(generatorRunning(invocation));

        const outcome = spawnSync(RUNTIME, argv, { cwd, stdio: "inherit" });
        if (outcome.status === 0) {
            continue;
        }

        process.stdout.write(generatorFailed(invocation, outcome.status));
        return 1;
    }

    process.stdout.write(generatorsRan(declared.length));
    return 0;
};

process.exit(main());
```
