108 lines
3.0 KiB
Plaintext
108 lines
3.0 KiB
Plaintext
"""
|
|
KCL Version Management Schema for Provisioning System
|
|
Provides type-safe version definitions with GitHub release integration
|
|
"""
|
|
|
|
schema Version:
|
|
"""Version information for a component with optional GitHub integration"""
|
|
# Version number (e.g., "1.31.0") or "latest"
|
|
current: str
|
|
# GitHub releases URL for automated checking
|
|
source?: str
|
|
# GitHub tags URL (alternative source)
|
|
tags?: str
|
|
# Official project website
|
|
site?: str
|
|
# Enable automatic latest version checking
|
|
check_latest?: bool = False
|
|
# Cache duration in seconds (24h default)
|
|
grace_period?: int = 86400
|
|
|
|
check:
|
|
len(current) > 0, "Version current field cannot be empty"
|
|
current == "latest" or current == "" or len(current.split(".")) >= 1, "Version must be semantic (x.y.z), 'latest', or empty"
|
|
|
|
schema TaskservVersion:
|
|
"""Complete taskserv version configuration with dependency tracking"""
|
|
# Taskserv name (must match directory)
|
|
name: str
|
|
# Primary version configuration
|
|
version: Version
|
|
# Other taskservs this component depends on
|
|
dependencies?: [str]
|
|
# Profile-specific version overrides
|
|
profiles?: {str:Version}
|
|
|
|
check:
|
|
len(name) > 0, "Taskserv name cannot be empty"
|
|
name == name.lower(), "Taskserv name must be lowercase"
|
|
|
|
schema VersionCache:
|
|
"""Cache structure for latest version lookups"""
|
|
# Resolved version string
|
|
version: str
|
|
# ISO timestamp of last fetch
|
|
fetched_at: str
|
|
# Source URL used for resolution
|
|
source: str
|
|
# Time-to-live in seconds
|
|
ttl: int = 86400
|
|
|
|
check:
|
|
len(version) > 0, "Cached version cannot be empty"
|
|
len(source) > 0, "Cache source URL cannot be empty"
|
|
|
|
# Package metadata for core provisioning KCL module
|
|
schema PackageMetadata:
|
|
"""Core package metadata for distribution"""
|
|
# Package name
|
|
name: str
|
|
# Package version
|
|
version: str
|
|
# API compatibility version
|
|
api_version: str
|
|
# Build timestamp
|
|
build_date: str
|
|
# Minimum KCL version required
|
|
kcl_min_version: str
|
|
# Maximum KCL version supported
|
|
kcl_max_version: str
|
|
# External dependencies
|
|
dependencies: {str:str}
|
|
# Feature flags
|
|
features: {str:bool}
|
|
# Available schema exports
|
|
schema_exports: [str]
|
|
|
|
check:
|
|
len(name) > 0, "Package name cannot be empty"
|
|
len(version) > 0, "Package version cannot be empty"
|
|
|
|
# Default package metadata
|
|
package_metadata: PackageMetadata = {
|
|
name = "provisioning"
|
|
version = "0.1.0"
|
|
api_version = "v1"
|
|
build_date = "2025-09-28"
|
|
kcl_min_version = "0.11.0"
|
|
kcl_max_version = "0.12.0"
|
|
dependencies = {}
|
|
features = {
|
|
server_management = True
|
|
cluster_orchestration = True
|
|
provider_abstraction = True
|
|
workflow_automation = True
|
|
batch_operations = True
|
|
}
|
|
schema_exports = [
|
|
"Settings"
|
|
"Server"
|
|
"Cluster"
|
|
"Provider"
|
|
"Workflow"
|
|
"BatchWorkflow"
|
|
"Version"
|
|
"PackageMetadata"
|
|
]
|
|
}
|