Skip to content

Conversation

@eveld
Copy link
Contributor

@eveld eveld commented Jul 15, 2025

Summary

This PR adds plugin metadata endpoint functionality to HCLConfig and reorganizes test files to follow Go conventions.

Changes

Plugin Metadata Support

  • New Metadata struct with plugin information:
    • Name, version, description, author, homepage, license
    • Capabilities (slice of strings)
    • API version and supported OS/architecture
  • Added Metadata() method to Plugin interface
  • Updated PluginBase with metadata storage and accessor methods

Plugin Implementations Updated

  • TestPlugin and EmbeddedTestPlugin in test_plugin.go
  • PersonPlugin in plugins/example/main.go
  • SimpleTestPlugin in parser tests
  • All implementations include proper metadata with "v" prefix for semantic versions

Test File Reorganization

  • Moved plugin discovery utilities from testutils_discovery_test.go to testutils_test.go
  • Moved parser plugin tests from parser_plugin_test.go to parser_test.go
  • Added comprehensive metadata tests in plugins/plugin_test.go
  • Removed separate test utility files following Go conventions

Key Features

  • Metadata can be retrieved without plugin initialization - perfect for registry systems
  • JSON serializable - ready for API responses
  • Backward compatible - all existing tests pass
  • Semantic versioning with "v" prefix for consistency

Test Results

All tests pass including:

  • Metadata JSON serialization/deserialization
  • Plugin interface compliance
  • Pre-initialization metadata access
  • Plugin discovery functionality
  • Parser plugin registration

Usage Example

plugin := &TestPlugin{}
metadata := plugin.Metadata()
// Returns: name="test", version="v1.0.0", api="v1", etc.

This provides the foundation for plugin registry systems to query plugin metadata programmatically without full initialization.

- Add Metadata struct with plugin information (name, version, capabilities, etc.)
- Add Metadata() method to Plugin interface for programmatic access
- Update all plugin implementations with metadata support
- Use semantic versioning with "v" prefix for consistency
- Reorganize test files following Go conventions:
  - Move plugin discovery utilities to testutils_test.go
  - Move parser plugin tests to parser_test.go
  - Remove separate test utility files
- Add comprehensive tests for metadata functionality
- Maintain backward compatibility with existing plugin system

This provides foundation for plugin registry systems to query
metadata without full plugin initialization.
@eveld eveld requested a review from nicholasjackson July 15, 2025 08:21
@eveld eveld marked this pull request as draft July 16, 2025 07:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants