# core/factories/tool.factory.ts

> 23 lines of code and 3 definitions.

Tree: GovLab Quality
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/quality#file-quality-core-factories-tool-factory-ts
Source text: https://banes-lab.com/source/quality/core/factories/tool.factory.ts.txt

Listed in [core/factories](https://banes-lab.com/api/source/quality/core/factories.md), after [core/factories/quality.factory.ts](https://banes-lab.com/source/quality/core/factories/quality.factory.ts.md).

## Definitions

- `gatingAdvisory` (lexical_declaration, line 12, exported)
- `toolAdvisory` (lexical_declaration, line 4, exported)
- `quietGatingAdvisory` (lexical_declaration, line 20, exported)

## Contained in

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

## Uses

- [configuration/strings/tool.strings.ts](https://banes-lab.com/source/quality/configuration/strings/tool.strings.ts.md)

## Linked from

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

## Source

```typescript
import type { AdvisoryContext, RunnerContext } from "#types/tool.types";
import { notInstalledOutput } from "#configuration/strings/tool.strings";

export const toolAdvisory = function toolAdvisory(
    context: RunnerContext,
    tool: string,
    installHint: string,
): AdvisoryContext {
    return { ecosystem: context.ecosystem, installHint, root: context.root, tool };
};

export const gatingAdvisory = function gatingAdvisory(
    context: RunnerContext,
    tool: string,
    installHint: string,
): AdvisoryContext {
    return { ...toolAdvisory(context, tool, installHint), failureSeverity: "error", gating: true };
};

export const quietGatingAdvisory = function quietGatingAdvisory(
    context: RunnerContext,
    tool: string,
    installHint: string,
): AdvisoryContext {
    return { ...gatingAdvisory(context, tool, installHint), notInstalledOutput: notInstalledOutput(tool) };
};
```
