# Scripts Directory

Organized utility scripts for FetchML development, testing, and release management.

## Development Scripts (`dev/`)

### `smoke-test.sh`
**Purpose**: End-to-end smoke testing for dev/prod environments  
**Usage**: `./scripts/dev/smoke-test.sh [dev|prod] [--native]`

Tests full stack health by starting docker-compose services and verifying:
- API health endpoints
- Prometheus metrics ingestion (dev mode)
- Native library integration (with `--native` flag)

**Examples**:
```bash
./scripts/dev/smoke-test.sh dev          # Standard smoke test
./scripts/dev/smoke-test.sh prod --native # Prod with native libs
```

### `manage-artifacts.sh`
**Purpose**: Local benchmark artifact management  
**Usage**: `./scripts/dev/manage-artifacts.sh [list|clean|compare|export]`

Manages benchmark run artifacts in `.local-artifacts/`.

### `detect-native.go`
**Purpose**: Native library detection utility  
**Usage**: `go run ./scripts/dev/detect-native.go`

Detects native C++ libraries and CGO configuration. Shows which native libs are available.

### `setup-monitoring.py`
**Purpose**: Development monitoring setup  
**Usage**: `python3 ./scripts/dev/setup-monitoring.py`

Creates Grafana provisioning structure for local development.

---

## CI Scripts (`ci/`)

### `checks.sh`
**Purpose**: Maintainability enforcement  
**Usage**: `./scripts/ci/checks.sh` or `make ci-checks`

### `test.sh`
**Purpose**: CI test runner  
**Usage**: `./scripts/ci/test.sh`

### `verify-paths.sh`
**Purpose**: Path convention verification  
**Usage**: `./scripts/ci/verify-paths.sh`

---

## Release Scripts (`release/`)

### `cleanup.sh`
**Purpose**: Unified cleanup utility  
**Usage**: `./scripts/release/cleanup.sh [all|docker|podman|logs|secrets|state|testdata]`

### `prepare.sh`
**Purpose**: Release preparation  
**Usage**: `./scripts/release/prepare.sh`

### `sanitize.sh`
**Purpose**: Config sanitization  
**Usage**: `./scripts/release/sanitize.sh`

### `verify.sh`
**Purpose**: Pre-release verification  
**Usage**: `./scripts/release/verify.sh` or `make release-check`

---

## Testing Scripts (`testing/`)

### `gen-ssh-test-keys.sh`
**Purpose**: Generate SSH keys for TUI testing  
**Usage**: `./scripts/testing/gen-ssh-test-keys.sh`

### `tui-ssh-test.sh`
**Purpose**: Manual TUI SSH testing  
**Usage**: `./scripts/testing/tui-ssh-test.sh`

### `test-prod.sh`
**Purpose**: Production validation  
**Usage**: `./scripts/testing/test-prod.sh`

---

## Benchmark Scripts (`benchmarks/`)

### `run-benchmarks-local.sh`
**Purpose**: Local benchmark execution  
**Usage**: `./scripts/benchmarks/run-benchmarks-local.sh`

---

## Maintenance Scripts (`maintenance/`)

### `cleanup.sh`
**Purpose**: Archive cleanup  
**Usage**: `./scripts/maintenance/cleanup.sh [all|dry-run]`

### `cleanup-benchmarks.sh`
**Purpose**: Benchmark lifecycle management  
**Usage**: `./scripts/maintenance/cleanup-benchmarks.sh [benchmarks|all|aggressive|status]`

---

## Shared Library (`lib/`)

### `common.sh`
**Purpose**: Common shell functions  
**Usage**: `source "$(dirname "$0")/lib/common.sh"`

---

## Legacy Consolidation

| Old Script | New Location |
|------------|--------------|
| `ci-checks.sh` | `ci/checks.sh` |
| `ci-test.sh` | `ci/test.sh` |
| `smoke-test.sh` | `dev/smoke-test.sh` |
| `smoke-test-native.sh` | *merged into dev/smoke-test.sh --native* |
| `manage-artifacts.sh` | `dev/manage-artifacts.sh` |
| `verify-paths.sh` | `ci/verify-paths.sh` |
| `release/verify-release.sh` | `release/verify.sh` |
| `release/prepare-release.sh` | `release/prepare.sh` |
| `release/sanitize-configs.sh` | `release/sanitize.sh` |
| `release/cleanup-*.sh` (6 files) | `release/cleanup.sh` |
