mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 14:06:36 +08:00
43dc97e48c
- Moved cmd/, core/, plugins/, pkg/, downstream/, and main.go into backend/ directory - Batch updated all Go source files to import github.com/Rain-kl/Wavelet/backend/... - Updated Makefile, scripts/swagger.sh, architecture guards, and platform skills - Passed all quality gates (100% tests, 0 lint issues, clean build)
39 lines
1.3 KiB
Go
39 lines
1.3 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package core
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// Manifest defines the metadata and dependency declarations for a plugin.
|
|
type Manifest struct {
|
|
// Name is the unique identifier for the plugin (e.g. "auth", "user", "order").
|
|
Name string `json:"name" yaml:"name"`
|
|
|
|
// Version is the semantic version string of the plugin (e.g. "1.0.0").
|
|
Version string `json:"version,omitempty" yaml:"version,omitempty"`
|
|
|
|
// Description gives a brief summary of the plugin capabilities.
|
|
Description string `json:"description,omitempty" yaml:"description,omitempty"`
|
|
|
|
// Author specifies the author or maintainer of the plugin.
|
|
Author string `json:"author,omitempty" yaml:"author,omitempty"`
|
|
|
|
// Dependencies lists the plugin names that this plugin depends on.
|
|
Dependencies []string `json:"dependencies,omitempty" yaml:"dependencies,omitempty"`
|
|
|
|
// Metadata holds arbitrary plugin-specific metadata.
|
|
Metadata map[string]any `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
|
}
|
|
|
|
// Validate checks whether the manifest satisfies basic integrity requirements.
|
|
func (m Manifest) Validate() error {
|
|
if strings.TrimSpace(m.Name) == "" {
|
|
return fmt.Errorf("%w: %w", ErrInvalidManifest, ErrInvalidManifestName)
|
|
}
|
|
return nil
|
|
}
|