The plugin docs tell plugins to implement Migrations() returning
[]*xormigrate.Migration, but neither `xorm.io/xorm` nor
`src.techknowlogick.com/xormigrate` was in the yaegi symbol table, so an
interpreted plugin failed at the import before it could ever be loaded.
Add both packages to yaegiSymbolPackages and commit the generated symbol
tables, plus a loader test that runs an interpreted plugin migration
against a real engine.
Fixes#3501
EvalPath-based loading of Go source directories with typed factory
functions for interface bridging (required by yaegi's wrapping model).
Supports all plugin capabilities: routes, events, and migrations.
Registers itself into the Manager via init() to avoid import cycles.
Add the core plugin system with four interfaces:
- Plugin: base lifecycle (Name, Version, Init, Shutdown)
- MigrationPlugin: database migrations
- AuthenticatedRouterPlugin: routes behind auth
- UnauthenticatedRouterPlugin: public routes
The Manager handles loading, initialization, shutdown, and route
registration. Includes native .so loader (marked deprecated) and
yaegi loader integration point.