Metadata-Version: 2.4
Name: adscan
Version: 6.3.0
Summary: ADscan launcher (host-side) that orchestrates Docker to run the ADscan runtime.
Author: ADscan
Project-URL: homepage, https://github.com/ADscanPro/adscan
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: POSIX :: Linux
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: LICENSE.EULA
Requires-Dist: rich<14.0,>=13.0
Requires-Dist: requests<3.0,>=2.31.0
Requires-Dist: packaging<26.0,>=23.0
Requires-Dist: certifi>=2023.0.0
Requires-Dist: sentry-sdk<3.0,>=1.40.0
Provides-Extra: dev
Requires-Dist: pytest<9.0,>=8.0; extra == "dev"
Requires-Dist: ruff<1.0,>=0.9.0; extra == "dev"
Requires-Dist: build<2.0,>=1.2.0; extra == "dev"
Requires-Dist: twine<7.0,>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.8.0; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Requires-Dist: pytest-html; extra == "dev"
Requires-Dist: jinja2; extra == "dev"
Provides-Extra: cli
Requires-Dist: psutil; extra == "cli"
Requires-Dist: python-docx; extra == "cli"
Requires-Dist: python-magic<0.5,>=0.4.27; platform_system == "Linux" and extra == "cli"
Requires-Dist: markitdown<0.2,>=0.1.5; python_version >= "3.10" and extra == "cli"
Requires-Dist: dnspython<3.0,>=2.7.0; extra == "cli"
Requires-Dist: pydantic-ai>=0.8.1; extra == "cli"
Requires-Dist: netifaces; extra == "cli"
Requires-Dist: prompt_toolkit; extra == "cli"
Requires-Dist: questionary; extra == "cli"
Requires-Dist: neo4j>=5.0.0; extra == "cli"
Requires-Dist: posthog; extra == "cli"
Requires-Dist: pypsrp; extra == "cli"
Requires-Dist: pydantic-settings>=2.4.0; extra == "cli"
Requires-Dist: selenium<5.0,>=4.28.0; extra == "cli"
Requires-Dist: textual>=0.80.0; extra == "cli"
Dynamic: license-file

# ADscan (PyPI Launcher)

This PyPI package provides the `adscan` command as a lightweight **Python launcher**.

The launcher is responsible for:
- pulling the ADscan Docker image (`adscan install`)
- running the ADscan CLI inside Docker (`adscan start`, `adscan ci`, and passthrough commands)

The full ADscan CLI implementation lives inside the Docker image.

## Requirements

- Linux host (x86_64)
- Docker Engine + Docker Compose plugin installed
- Permission to run Docker (root or user in the `docker` group)

## Quick Start

```bash
pip install adscan
adscan install
adscan start
```

## Local development with `uv`

If you cloned this repository and want to run the launcher locally:

```bash
uv sync --extra dev
uv run adscan --help
uv run adscan version
```

Run lint/tests/build with `uv`:

```bash
uv run ruff check adscan_core adscan_launcher adscan_internal
uv run pytest -m unit
uv run python -m build
```

## Install from TestPyPI (Kali)

Use this when validating a TestPyPI release on Kali:

```bash
python -m pip install \
  --index-url https://test.pypi.org/simple/ \
  --extra-index-url https://pypi.org/simple \
  adscan --break-system-packages
```

Install a specific TestPyPI version:

```bash
python -m pip install \
  --index-url https://test.pypi.org/simple/ \
  --extra-index-url https://pypi.org/simple \
  adscan==5.0.0.devYYYYMMDDHHMMSS --break-system-packages
```

## Configuration

Override the Docker image used by the launcher:

```bash
export ADSCAN_DOCKER_IMAGE="adscan/adscan-lite:latest"
```

Use the dev channel image:

```bash
export ADSCAN_DOCKER_CHANNEL=dev
```

## User Documentation

User-facing installation, troubleshooting, and Docker/BloodHound operational guidance
is maintained in the ADscan docs site:

- https://www.adscanpro.com/docs/getting-started/installation
- https://www.adscanpro.com/docs/guides/troubleshooting
