Metadata-Version: 2.4
Name: ros2forge
Version: 0.4.0
Summary: ROS2 workspace scaffolder + multi-machine diagnostics toolkit
Home-page: https://github.com/yourusername/ros2forge
Author: Aarav
Author-email: your@email.com
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: click>=8.0
Requires-Dist: questionary>=2.0
Requires-Dist: jinja2>=3.0
Requires-Dist: rich>=13.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# rosforge

**ROS2 workspace scaffolder + multi-machine diagnostics toolkit.**

Two tools. One install.

---

## Install

```bash
pip install rosforge
```

Or from source:
```bash
git clone https://github.com/yourname/rosforge
cd rosforge && pip install -e .
```

---

## rosforge scaf

Scaffold a complete ROS2 workspace interactively:

```bash
rosforge scaf
```

Generates:
- `config/cyclonedds.xml` or `fastdds.xml` — correct for your network topology
- `config/bashrc_block.sh` — exact exports, ready to paste
- `scripts/install_device1.sh`, `install_device2.sh` — full per-device install scripts
- `src/<pkg>/<node>.py` — publisher / subscriber / service node, colcon-ready
- `package.xml`, `setup.py`
- `README.md` with device-specific steps

Supports: Humble / Iron / Jazzy / Rolling, RPi / Jetson / x86 / STM32, CycloneDDS / FastDDS,
same LAN / cross-subnet / hotspot / single machine, micro-ROS agent config.

---

## rosforge doctor

Diagnose your ROS2 multi-machine setup:

```bash
# Local checks only
rosforge doctor

# Check peer connectivity too
rosforge doctor raspberrypi.local 192.168.1.42
```

Checks:
- ROS2 installation and distro detection
- RMW / DDS environment variables
- ROS_DOMAIN_ID and ROS_LOCALHOST_ONLY
- Network interface enumeration
- Multicast reachability
- UFW / iptables firewall rules blocking UDP
- DDS port availability (7400–7411)
- NTP clock synchronization
- ROS2 daemon health
- Cross-distro compatibility warnings
- Live topic discovery smoke-test
- Per-peer: ICMP ping + UDP reachability

Every failure comes with a specific fix command.

---

## Workflow

```bash
# 1. Scaffold your workspace
rosforge scaf

# 2. Diagnose immediately after
rosforge doctor raspberrypi.local jetson.local

# 3. Apply fixes, re-run until clean
rosforge doctor
```

---

## License

MIT
