Overview
Datoso supports a plugin-based architecture through seeds, which are specialized plugins that handle different DAT file sources. You can create custom seeds to support new DAT repositories or customize existing functionality.Getting Started
To develop a custom seed, you should start with the base seed template:datoso_seed_base
Official seed template repository with boilerplate code and structure
Seed Structure
A Datoso seed is a Python package with a specific structure. The naming convention is:Required Components
Every seed must implement the following components:1. Module Attributes
Your seed module must define these attributes in__init__.py:
2. Fetch Module
Thefetch.py module must contain a fetch() function to download DAT files:
3. Rules Module
Therules.py module must contain a get_rules() function that returns the rules engine configuration:
4. Actions Module
Theactions.py module must contain a get_actions() function that defines DAT processing actions:
Plugin Discovery
Datoso automatically discovers installed seeds using Python’spkgutil.iter_modules(). Seeds are identified by the naming pattern:
Checking Module Requirements
The doctor command validates your seed installation by checking:- Required module attributes (
__prefix__,__description__) - Required functions (
fetch.fetch,rules.get_rules,actions.get_actions) - External executable dependencies (if specified in
__requirements__)
Installation Methods
As a Package
Install your seed as a regular Python package:For Development
Install in editable mode for development:With Datoso Extras
You can also make your seed installable as a Datoso extra by adding it to thepyproject.toml:
Available Official Seeds
The following official seeds are available as reference:- fbneo - Final Burn Neo
- nointro - No-Intro Datomatic
- redump - Redump
- pleasuredome - Pleasuredome
- tdc - Total DOS Collection
- vpinmame - Visual Pinball
- whdload - WHDLoad
- eggman - Eggman Teknoparrot, ALLs.net
Some seeds (md_enhanced, sfc_enhancedcolors, sfc_msu1, sfc_speedhacks, translatedenglish) are marked as deprecated.
Managing Seeds
List Installed Seeds
View all installed seeds:Seed Details
Get detailed information about a specific seed:- Full module name
- Version
- Author
- Description
Validation
Doctor Command
Use the doctor command to validate your seed:- Module is properly installed
- All required attributes exist
- All required functions are present
- External dependencies are available
Helper Functions
Datoso provides helper functions insrc/datoso/helpers/plugins.py:
Best Practices
Follow Naming Conventions
Follow Naming Conventions
Always use the
datoso_seed_ prefix for your package name to ensure proper discovery.Implement All Required Components
Implement All Required Components
Ensure your seed has all required attributes and functions. Use
datoso doctor to validate.Handle Errors Gracefully
Handle Errors Gracefully
Implement proper error handling in your fetch and process functions. Log errors appropriately.
Document Your Seed
Document Your Seed
Provide clear documentation about what your seed does, what sources it supports, and any special requirements.
Test Thoroughly
Test Thoroughly
Test both fetch and process operations with various DAT files before publishing.
Next Steps
Troubleshooting
Common issues and debugging tips
Configuration
Learn about Datoso configuration options