# core/converters/environment.converter.ts

> 13 lines of code and 5 definitions.

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

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

## Definitions

- `withPathEntry` (lexical_declaration, line 4, exported)
- `segments` (lexical_declaration, line 5, exported)
- `withNodeOption` (lexical_declaration, line 9, exported)
- `base` (lexical_declaration, line 10, exported)
- `stageBinDir` (lexical_declaration, line 14, exported)

## Contained in

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

## Source

```typescript
import { BIN_SEGMENTS } from "#configuration/constants/shell.constants";
import path from "node:path";

export const withPathEntry = function withPathEntry(current: string | undefined, dir: string): string {
    const segments = typeof current === "string" && current.length > 0 ? current.split(path.delimiter) : [];
    return segments.includes(dir) ? segments.join(path.delimiter) : [dir, ...segments].join(path.delimiter);
};

export const withNodeOption = function withNodeOption(current: string | undefined, option: string): string {
    const base = typeof current === "string" ? current : "";
    return base.includes(option) ? base : `${base} ${option}`.trim();
};

export const stageBinDir = function stageBinDir(root: string): string {
    return path.join(root, ...BIN_SEGMENTS);
};
```
