Metadata-Version: 2.4
Name: elfshoe
Version: 0.1.3
Summary: Automated, validated, multi-architecture iPXE boot menu generation - where elves craft your network boot menus
Project-URL: Homepage, https://github.com/timhughes/elfshoe
Project-URL: Documentation, https://timhughes.github.io/elfshoe/
Project-URL: Repository, https://github.com/timhughes/elfshoe
Project-URL: Issues, https://github.com/timhughes/elfshoe/issues
Author-email: Tim Hughes <thughes@thegoldfish.org>
License-Expression: MIT
License-File: LICENSE
Keywords: boot,elfshoe,ipxe,menu,network-boot,pxe
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Boot
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.7
Requires-Dist: jinja2>=3.0
Requires-Dist: pyyaml>=6.0
Provides-Extra: dev
Requires-Dist: black>=26.1.0; extra == 'dev'
Requires-Dist: pre-commit>=4.5.1; extra == 'dev'
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.10; extra == 'dev'
Requires-Dist: pytest>=9.0.2; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
Requires-Dist: mkdocs-minify-plugin>=0.7.0; extra == 'docs'
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
Requires-Dist: pymarkdownlnt>=0.9.0; extra == 'docs'
Description-Content-Type: text/markdown

# elfshoe

**Automated iPXE boot menu generation - where elves craft your network boot menus.**

[![Documentation](https://img.shields.io/badge/docs-mkdocs-blue)](https://timhughes.github.io/elfshoe/)
[![PyPI version](https://img.shields.io/pypi/v/elfshoe)](https://pypi.org/p/elfshoe)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/elfshoe)](https://pypi.org/p/elfshoe)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/elfshoe)](https://pypi.org/p/elfshoe)

## Features

- **🔧 Configuration-driven** - Define distributions and boot options in YAML
- **🏗️ Multi-architecture support** - Automatic x86_64, ARM64, i386, ARM filtering per client
- **🔄 Dynamic version detection** - Automatically fetch latest versions from metadata
- **✅ URL validation** - Verify boot files exist before adding to menu
- **📝 Custom templates** - Jinja2-based templates, easy to customize
- **🚀 Fast mode** - Skip validation for quick regeneration
- **🎯 Modular architecture** - Plugin system for adding new distributions
- **🏗️ Modern build system** - Uses Hatch for packaging and environments

## Quick Start

```bash
# 1. Copy example configuration
cp docs/examples/config.yaml config.yaml

# 2. Generate menu
elfshoe

# 3. Deploy to your HTTP server
sudo cp elfshoe.ipxe /var/www/pxe/
```

## Installation

### From PyPI

```bash
pip install elfshoe
```

### From Source

```bash
# Clone repository
git clone https://github.com/timhughes/elfshoe.git
cd elfshoe

# Install with pip
pip install -e .

# Or use hatch
hatch shell
```

### Requirements

- Python >= 3.7
- PyYAML >= 6.0
- Jinja2 >= 3.0

## Documentation

- **[Getting Started](https://timhughes.github.io/elfshoe/getting-started/)** - Create your first boot menu
- **[Server Setup](https://timhughes.github.io/elfshoe/server-setup/)** - Configure DHCP, TFTP, and HTTP infrastructure
- **[Reference](https://timhughes.github.io/elfshoe/reference/)** - Commands and configuration
- **[Architecture](https://timhughes.github.io/elfshoe/developer/architecture/)** - Technical design

## Example Configuration

See `docs/examples/config.yaml` for a complete working example with Fedora, CentOS, Debian, and netboot.xyz.

## Contributing

Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Credits

- Built with [iPXE](https://ipxe.org/) - open source network boot firmware
- Uses [Hatch](https://hatch.pypa.io/) for modern Python packaging
