Metadata-Version: 2.4
Name: open-harness-suite
Version: 0.3.3
Summary: The full open-harness suite — linelens, dupelens, secretlens, testlens, scopelens — in one install
Author-email: Jassen Castillo <castillo.cristianj@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/artiko00/open-harness
Project-URL: Repository, https://github.com/artiko00/open-harness
Project-URL: Issues, https://github.com/artiko00/open-harness/issues
Keywords: linter,code-quality,duplication,secrets,testing,pre-commit,ci
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: open-harness-linelens==0.3.2
Requires-Dist: open-harness-dupelens==0.3.2
Requires-Dist: open-harness-secretlens==0.3.2
Requires-Dist: open-harness-testlens==0.3.2
Requires-Dist: open-harness-scopelens==0.2.0

# open-harness

The full **open-harness** suite in a single `pip install`. Installs all five code-quality tools at once: `linelens`, `dupelens`, `secretlens`, `testlens`, `scopelens`.

Part of the [open-harness](https://github.com/artiko00/open-harness) monorepo. [Español abajo](#español).

> **Same suite, other ecosystems**: the binaries shipped here are also published on **npm** ([`@open_harness/open-harness`](https://www.npmjs.com/package/@open_harness/open-harness)) for Node/TypeScript projects and on **Packagist** (`open-harness/open-harness`) for PHP/Composer projects. Pick the registry that matches your stack — the underlying tools and config formats are identical.

## Install

```bash
pip install open-harness-suite
```

pip resolves the dependency tree and downloads the right native wheel per platform for each tool (Linux x86_64, macOS arm64, macOS x86_64, Windows x86_64).

## What you get

| Tool | Purpose |
|---|---|
| **linelens**   | File length linter — flags files over a configurable line limit. |
| **dupelens**   | Code duplication detector (Rabin-Karp, language-agnostic). |
| **secretlens** | Secret and credential detector (AWS keys, GitHub tokens, JWT, PEM, …). |
| **testlens**   | Test coverage detector — finds source files without tests, 9 languages. |
| **scopelens**  | Per-PR file- and line-budget gate over `git` — counts the branch-vs-base diff at pre-commit. |

After install, all five binaries live in your venv's `bin/`:

```bash
linelens   check
dupelens   check
secretlens check
testlens   check --lang python
scopelens  check
```

## Configure from `pyproject.toml`

Each tool will read its config from `[tool.<name>]` inside your `pyproject.toml` (planned, see roadmap). Today, configuration goes in `<tool>.json` files at the repo root:

```json
// linelens.json
{ "default": { "maxLines": 100 } }
```

Precedence per tool: `--config <path>` > dedicated `*.json` > `pyproject.toml` table > built-in defaults.

## Run all five as a single CI gate

```yaml
# GitHub Actions / GitLab CI / etc.
- pip install open-harness-suite
- linelens   check --fail
- dupelens   check --fail
- secretlens check --fail
- testlens   check --fail --lang python
- scopelens  check --fail
```

```yaml
# .pre-commit-config.yaml
repos:
  - repo: local
    hooks:
      - id: linelens
        name: linelens
        entry: linelens check --fail --no-color
        language: system
        pass_filenames: false
      - id: dupelens
        name: dupelens
        entry: dupelens check --fail --no-color
        language: system
        pass_filenames: false
      - id: secretlens
        name: secretlens
        entry: secretlens check --fail --no-color
        language: system
        pass_filenames: false
      - id: testlens
        name: testlens
        entry: testlens check --fail --lang python
        language: system
        pass_filenames: false
```

## Per-tool docs

Each tool ships in three ecosystems with identical behavior. Pick the registry that matches your project's stack:

| Tool | PyPI (Python) | npm (Node/TS) | Packagist (PHP) |
|---|---|---|---|
| linelens   | [open-harness-linelens](https://pypi.org/project/open-harness-linelens/)     | [@open_harness/linelens](https://www.npmjs.com/package/@open_harness/linelens)     | [open-harness/linelens](https://packagist.org/packages/open-harness/linelens)     |
| dupelens   | [open-harness-dupelens](https://pypi.org/project/open-harness-dupelens/)     | [@open_harness/dupelens](https://www.npmjs.com/package/@open_harness/dupelens)     | [open-harness/dupelens](https://packagist.org/packages/open-harness/dupelens)     |
| secretlens | [open-harness-secretlens](https://pypi.org/project/open-harness-secretlens/) | [@open_harness/secretlens](https://www.npmjs.com/package/@open_harness/secretlens) | [open-harness/secretlens](https://packagist.org/packages/open-harness/secretlens) |
| testlens   | [open-harness-testlens](https://pypi.org/project/open-harness-testlens/)     | [@open_harness/testlens](https://www.npmjs.com/package/@open_harness/testlens)     | [open-harness/testlens](https://packagist.org/packages/open-harness/testlens)     |
| scopelens  | [open-harness-scopelens](https://pypi.org/project/open-harness-scopelens/)   | [@open_harness/scopelens](https://www.npmjs.com/package/@open_harness/scopelens)   | [open-harness/scopelens](https://packagist.org/packages/open-harness/scopelens)   |

---

## Español

La suite completa de **open-harness** en un solo `pip install`. Instala los cinco tools de calidad de código: `linelens`, `dupelens`, `secretlens`, `testlens`, `scopelens`.

Parte del monorepo [open-harness](https://github.com/artiko00/open-harness).

### Instalación

```bash
pip install open-harness-suite
```

pip descarga automáticamente la wheel nativa correcta para tu plataforma por cada tool (Linux x86_64, macOS arm64, macOS x86_64, Windows x86_64).

### Qué incluye

Los 5 binarios disponibles en el `bin/` de tu venv tras el install: `linelens`, `dupelens`, `secretlens`, `testlens`, `scopelens`.

### Configurá desde `pyproject.toml`

Cada tool leerá su config desde `[tool.<name>]` dentro de tu `pyproject.toml` (roadmap). Hoy la configuración va en archivos `<tool>.json` en la raíz del repo.

### CI / pre-commit

Sirve con GitHub Actions, GitLab CI o el framework `pre-commit` (snippets arriba).

## License

MIT — see the [main repository](https://github.com/artiko00/open-harness).
