Add manifest compilation (.core/manifest.yaml → core.json) with build metadata (commit, tag, timestamp, signature) and marketplace index generation by crawling directories for compiled or source manifests. New files: - manifest/compile.go: CompiledManifest, Compile(), ParseCompiled(), WriteCompiled(), LoadCompiled(), MarshalJSON() - marketplace/builder.go: Builder.BuildFromDirs(), BuildFromManifests(), WriteIndex() - cmd/scm/: CLI commands — compile, index, export Tests: 26 new (12 manifest, 14 marketplace), all passing. Co-Authored-By: Virgil <virgil@lethean.io>
39 lines
1,022 B
Go
39 lines
1,022 B
Go
// Package scm provides CLI commands for manifest compilation and marketplace
|
|
// index generation.
|
|
//
|
|
// Commands:
|
|
// - compile: Compile .core/manifest.yaml into core.json
|
|
// - index: Build marketplace index from repository directories
|
|
// - export: Export a compiled manifest as JSON to stdout
|
|
package scm
|
|
|
|
import (
|
|
"forge.lthn.ai/core/cli/pkg/cli"
|
|
)
|
|
|
|
func init() {
|
|
cli.RegisterCommands(AddScmCommands)
|
|
}
|
|
|
|
// Style aliases from shared package.
|
|
var (
|
|
successStyle = cli.SuccessStyle
|
|
errorStyle = cli.ErrorStyle
|
|
dimStyle = cli.DimStyle
|
|
valueStyle = cli.ValueStyle
|
|
numberStyle = cli.NumberStyle
|
|
)
|
|
|
|
// AddScmCommands registers the 'scm' command and all subcommands.
|
|
func AddScmCommands(root *cli.Command) {
|
|
scmCmd := &cli.Command{
|
|
Use: "scm",
|
|
Short: "SCM manifest and marketplace operations",
|
|
Long: "Compile manifests, build marketplace indexes, and export distribution metadata.",
|
|
}
|
|
root.AddCommand(scmCmd)
|
|
|
|
addCompileCommand(scmCmd)
|
|
addIndexCommand(scmCmd)
|
|
addExportCommand(scmCmd)
|
|
}
|