mirror of
https://github.com/mudler/LocalAI.git
synced 2026-11-06 12:33:16 -05:00
Add the zip format of a package (a digest manifest plus the files of the OCI package for one platform) and an addonpkg zip subcommand that writes it from a verified layout, with a sha256 file. The zip comes from the same layout the registry package comes from, so there is one build path. Version comparison moves to contract.CompareVersions so the installer can use it for upgrades and downgrades. Assisted-by: Claude:claude-sonnet-5-5 go gofmt
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
// SPDX-License-Identifier: MIT
|
|
|
|
// Package packaging builds, checks, merges and publishes first-party add-on
|
|
// OCI packages. It is the code behind scripts/addons/package.sh,
|
|
// scripts/addons/channel.sh and the add-on package workflow, so the rules
|
|
// that workflow relies on are code that a test can run.
|
|
//
|
|
// Every operation fails closed: a missing input is an error, never a default.
|
|
package packaging
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
// stdout receives the key=value result lines of the subcommands.
|
|
var stdout io.Writer = os.Stdout
|
|
|
|
var commands = map[string]func(args []string) error{
|
|
"matrix": cmdMatrix,
|
|
"channel": cmdChannel,
|
|
"build": cmdBuild,
|
|
"verify": cmdVerify,
|
|
"extract": cmdExtract,
|
|
"zip": cmdZip,
|
|
"native-check": cmdNativeCheck,
|
|
"merge": cmdMerge,
|
|
"publish": cmdPublish,
|
|
"promote": cmdPromote,
|
|
"target": cmdTarget,
|
|
"catalog": cmdCatalog,
|
|
"catalog-tools": cmdCatalogTools,
|
|
"policy": cmdPolicy,
|
|
}
|
|
|
|
// Run executes one subcommand of the addonpkg command line.
|
|
func Run(args []string, out io.Writer) error {
|
|
if len(args) == 0 {
|
|
return fmt.Errorf("usage: addonpkg <subcommand> [flags]")
|
|
}
|
|
cmd, ok := commands[args[0]]
|
|
if !ok {
|
|
return fmt.Errorf("unknown subcommand %q", args[0])
|
|
}
|
|
previous := stdout
|
|
stdout = out
|
|
defer func() { stdout = previous }()
|
|
return cmd(args[1:])
|
|
}
|