# core/converters/invocation.converter.ts

> 22 lines of code and 2 definitions.

Tree: GovLab Pipeline
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/pipeline#file-pipeline-core-converters-invocation-converter-ts
Source text: https://banes-lab.com/source/pipeline/core/converters/invocation.converter.ts.txt

Listed in [core/converters](https://banes-lab.com/api/source/pipeline/core/converters.md), after [core/converters/environment.converter.ts](https://banes-lab.com/source/pipeline/core/converters/environment.converter.ts.md) and before [core/converters/report.converter.ts](https://banes-lab.com/source/pipeline/core/converters/report.converter.ts.md).

## Definitions

- `listOf` (lexical_declaration, line 5)
- `stageArgsOf` (lexical_declaration, line 14, exported)

## Contained in

- [core/converters](https://banes-lab.com/anatomy/pipeline/folder-pipeline-core-converters.md)

## Linked from

- [core/converters](https://banes-lab.com/anatomy/pipeline/folder-pipeline-core-converters.md)

## Source

```typescript
import { GATE_FLAGS, LIST_SEPARATOR } from "#configuration/constants/stage.constants";
import { type ParsedArgv, flagValues, hasFlag } from "@govlab/argv";
import type { StageArgs } from "#types/stage.types";

const listOf = function listOf(argv: ParsedArgv, flag: string): Set<string> {
    return new Set(
        flagValues(argv, flag)
            .flatMap((value) => value.split(LIST_SEPARATOR))
            .map((entry) => entry.trim())
            .filter((entry) => entry.length > 0),
    );
};

export const stageArgsOf = function stageArgsOf(argv: ParsedArgv): StageArgs {
    return {
        bypass: listOf(argv, GATE_FLAGS.bypass),
        members: listOf(argv, GATE_FLAGS.member),
        only: listOf(argv, GATE_FLAGS.only),
        report: hasFlag(argv, GATE_FLAGS.report),
        run: listOf(argv, GATE_FLAGS.run),
        skipTags: listOf(argv, GATE_FLAGS.skipTag),
        tags: listOf(argv, GATE_FLAGS.tag),
    };
};
```
