init
This commit is contained in:
75
pkg/manifest/manifest.go
Normal file
75
pkg/manifest/manifest.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package manifest
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Manifest Pack 清单
|
||||
type Manifest struct {
|
||||
// 元信息
|
||||
Version string `json:"version"` // DevPack 版本
|
||||
FormatVer string `json:"format_ver"` // Pack 格式版本
|
||||
PackID string `json:"pack_id"` // 唯一 ID (UUID)
|
||||
Name string `json:"name"` // Pack 名称
|
||||
Desc string `json:"description"`
|
||||
Author string `json:"author"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
|
||||
// 源环境信息
|
||||
Source SourceInfo `json:"source"`
|
||||
|
||||
// 采集器数据索引
|
||||
Collectors []CollectorEntry `json:"collectors"`
|
||||
|
||||
// 加密信息
|
||||
Encryption *EncryptionInfo `json:"encryption,omitempty"`
|
||||
|
||||
// 校验和
|
||||
Checksum string `json:"checksum"`
|
||||
}
|
||||
|
||||
// SourceInfo 源环境信息
|
||||
type SourceInfo struct {
|
||||
Hostname string `json:"hostname"`
|
||||
OS string `json:"os"`
|
||||
OSVersion string `json:"os_version"`
|
||||
Arch string `json:"arch"`
|
||||
Username string `json:"username"`
|
||||
DevPackVersion string `json:"devpack_version"`
|
||||
}
|
||||
|
||||
// CollectorEntry 采集器条目
|
||||
type CollectorEntry struct {
|
||||
Name string `json:"name"`
|
||||
Category string `json:"category"`
|
||||
Display string `json:"display_name"`
|
||||
ItemCount int `json:"item_count"`
|
||||
DataPath string `json:"data_path"`
|
||||
DataSize int64 `json:"data_size"`
|
||||
Checksum string `json:"checksum"`
|
||||
}
|
||||
|
||||
// EncryptionInfo 加密信息
|
||||
type EncryptionInfo struct {
|
||||
Algorithm string `json:"algorithm"`
|
||||
KDF string `json:"kdf"`
|
||||
KDFParams map[string]int `json:"kdf_params"`
|
||||
EncryptedCollectors []string `json:"encrypted_collectors"`
|
||||
}
|
||||
|
||||
// ToJSON 序列化为 JSON
|
||||
func (m *Manifest) ToJSON() ([]byte, error) {
|
||||
return json.MarshalIndent(m, "", " ")
|
||||
}
|
||||
|
||||
// FromJSON 从 JSON 反序列化
|
||||
func FromJSON(data []byte) (*Manifest, error) {
|
||||
var m Manifest
|
||||
if err := json.Unmarshal(data, &m); err != nil {
|
||||
return nil, fmt.Errorf("parse manifest: %w", err)
|
||||
}
|
||||
return &m, nil
|
||||
}
|
||||
Reference in New Issue
Block a user