feat(cli): rewrite plugin publish to send tar.zst archive

This commit is contained in:
Alex Dunmow 2026-06-03 01:33:12 +08:00
parent a827cda37a
commit e5b27f5a65

View File

@ -16,6 +16,7 @@ import (
core "git.dev.alexdunmow.com/block/core/plugin" core "git.dev.alexdunmow.com/block/core/plugin"
"git.dev.alexdunmow.com/block/core/cmd/ninja/internal/archive"
"git.dev.alexdunmow.com/block/core/cmd/ninja/internal/creds" "git.dev.alexdunmow.com/block/core/cmd/ninja/internal/creds"
"git.dev.alexdunmow.com/block/core/cmd/ninja/internal/orchclient" "git.dev.alexdunmow.com/block/core/cmd/ninja/internal/orchclient"
v1 "git.dev.alexdunmow.com/block/core/internal/api/orchestrator/v1" v1 "git.dev.alexdunmow.com/block/core/internal/api/orchestrator/v1"
@ -206,7 +207,7 @@ func newPluginPublishCmd() *cobra.Command {
var allowDirty bool var allowDirty bool
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "publish", Use: "publish",
Short: "Push the current commit as a new version and notify the registry", Short: "Build a source archive and publish a new version to the registry",
RunE: func(c *cobra.Command, _ []string) error { RunE: func(c *cobra.Command, _ []string) error {
host, _ := c.Flags().GetString("host") host, _ := c.Flags().GetString("host")
cr, err := creds.Load() cr, err := creds.Load()
@ -238,14 +239,10 @@ func newPluginPublishCmd() *cobra.Command {
} }
} }
tag := "v" + mod.Plugin.Version archiveBytes, err := archive.BuildSourceArchive(".")
if err := runCmd("git", "tag", "-a", tag, "-m", tag); err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "tag %s already exists or could not be created (%v); attempting push\n", tag, err) return fmt.Errorf("build archive: %w", err)
} }
if err := runCmd("git", "push", "ninja", tag); err != nil {
return fmt.Errorf("git push ninja %s: %w", tag, err)
}
fmt.Printf("Pushed %s to ninja remote\n", tag)
ctx := context.Background() ctx := context.Background()
pr, err := cli.Reg.GetPlugin(ctx, connect.NewRequest(&v1.GetPluginRequest{ pr, err := cli.Reg.GetPlugin(ctx, connect.NewRequest(&v1.GetPluginRequest{
@ -260,19 +257,19 @@ func newPluginPublishCmd() *cobra.Command {
pubResp, err := cli.Pub.PublishVersion(ctx, connect.NewRequest(&v1.PublishVersionRequest{ pubResp, err := cli.Pub.PublishVersion(ctx, connect.NewRequest(&v1.PublishVersionRequest{
PluginId: pr.Msg.Plugin.Id, PluginId: pr.Msg.Plugin.Id,
GitRef: "refs/tags/" + tag, Version: mod.Plugin.Version,
Channel: channel, Channel: channel,
Archive: archiveBytes,
ReadmeMd: string(readme), ReadmeMd: string(readme),
ChangelogMd: string(changelog), ChangelogMd: string(changelog),
})) }))
if err != nil { if err != nil {
return fmt.Errorf("publish: %w", err) return fmt.Errorf("publish: %w", err)
} }
fmt.Printf("Published version_id=%s\n", pubResp.Msg.Version.Id) fmt.Printf("Published %s@%s (%d bytes)\n", mod.Coords(), pubResp.Msg.Version.Version, len(archiveBytes))
for _, w := range pubResp.Msg.Warnings { for _, w := range pubResp.Msg.Warnings {
fmt.Printf(" warning: %s\n", w) fmt.Printf(" warning: %s\n", w)
} }
fmt.Printf(" Archive: %s\n", pubResp.Msg.ArchiveUrl)
return nil return nil
}, },
} }