# runtime/entrypoints/comment.entrypoint.ts

> 41 lines of code and 10 definitions.

Tree: GovLab Quality
Language: typescript
Layer: runtime
Canonical: https://banes-lab.com/anatomy/quality#file-quality-runtime-entrypoints-comment-entrypoint-ts
Source text: https://banes-lab.com/source/quality/runtime/entrypoints/comment.entrypoint.ts.txt

Listed in [runtime/entrypoints](https://banes-lab.com/api/source/quality/runtime/entrypoints.md), after [runtime/entrypoints/catalog.entrypoint.ts](https://banes-lab.com/source/quality/runtime/entrypoints/catalog.entrypoint.ts.md) and before [runtime/entrypoints/config.entrypoint.ts](https://banes-lab.com/source/quality/runtime/entrypoints/config.entrypoint.ts.md).

## Definitions

- `run` (lexical_declaration, line 27)
- `argv` (lexical_declaration, line 20)
- `workspace` (lexical_declaration, line 21)
- `requested` (lexical_declaration, line 22)
- `mode` (lexical_declaration, line 23)
- `[rootArg]` (lexical_declaration, line 24)
- `root` (lexical_declaration, line 25)
- `ignore` (lexical_declaration, line 33)
- `markers` (lexical_declaration, line 34)
- `excluded` (lexical_declaration, line 35)

## Contained in

- [runtime/entrypoints](https://banes-lab.com/anatomy/quality/folder-quality-runtime-entrypoints.md)

## Uses

- [configuration/strings/comment.strings.ts](https://banes-lab.com/source/quality/configuration/strings/comment.strings.ts.md)
- [core/coordinators/comment.coordinator.ts](https://banes-lab.com/source/quality/core/coordinators/comment.coordinator.ts.md)

## Linked from

- [configuration/strings](https://banes-lab.com/anatomy/quality/folder-quality-configuration-strings.md)
- [core/coordinators](https://banes-lab.com/anatomy/quality/folder-quality-core-coordinators.md)

## Source

```typescript
import {
    COMMENT_MODES,
    DEFAULT_COMMENT_MODE,
    EXTRACT_MODE,
    FAILURE_EXIT,
    FLAGS,
    KEEP_MODE,
    LIST_SEPARATOR,
} from "#configuration/constants/invocation.constants";
import { commentFailure, keepModeLine, modeLine } from "#configuration/strings/comment.strings";
import { flagValue, resolveArgv } from "@govlab/argv";
import { runExtract, runStrip } from "#core/coordinators/comment.coordinator";
import { COMMENT_ARGV } from "#configuration/configs/invocation.config";
import { loadGovlabConfig } from "#core/loaders/config.loader";
import { masterExcludeMarkers } from "#core/selectors/exclusions.selector";
import path from "node:path";
import { pathExclusion } from "#core/matchers/exclusions.matcher";
import process from "node:process";

const argv = resolveArgv(COMMENT_ARGV);
const workspace = process.cwd();
const requested = flagValue(argv, FLAGS.mode) ?? DEFAULT_COMMENT_MODE;
const mode = COMMENT_MODES.has(requested) ? requested : DEFAULT_COMMENT_MODE;
const [rootArg] = argv.positionals;
const root = rootArg === undefined ? workspace : path.resolve(rootArg);

const run = async function run(): Promise<void> {
    if (mode === KEEP_MODE) {
        process.stdout.write(keepModeLine);
        return;
    }
    process.stdout.write(modeLine(mode, root));
    const ignore = (flagValue(argv, FLAGS.ignore) ?? "").split(LIST_SEPARATOR).filter((entry) => entry.length > 0);
    const markers = masterExcludeMarkers(await loadGovlabConfig(workspace), "comments");
    const excluded = pathExclusion(workspace, [...markers, ...ignore]);
    await (mode === EXTRACT_MODE
        ? runExtract(root, flagValue(argv, FLAGS.out) ?? null, excluded)
        : runStrip(root, excluded));
};

await run().catch((error: unknown) => {
    process.stderr.write(commentFailure(error instanceof Error ? error.message : String(error)));
    process.exitCode = FAILURE_EXIT;
});
```
