fix(plugin): drop VisibilityLabel and its proto import
When core/plugin imported core/internal/api/orchestrator/v1 for the PluginVisibility enum, every consumer of core/plugin (including the orchestrator) transitively pulled in core's generated bindings — and those bindings register the same proto descriptors as the orchestrator's own bindings, panicking at startup. Move the label helper into the CLI's cmd package where it belongs; core/plugin no longer references the proto package at all. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
7fc20a990b
commit
af7f44c34d
@ -85,7 +85,7 @@ func printPublicSection(ctx context.Context, cli *orchclient.Client) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, p := range gs.Msg.Plugins {
|
for _, p := range gs.Msg.Plugins {
|
||||||
fmt.Printf(" @%s/%s [%s]\n", s.Slug, p.Name, core.VisibilityLabel(p.Visibility))
|
fmt.Printf(" @%s/%s [%s]\n", s.Slug, p.Name, visibilityLabel(p.Visibility))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -175,6 +175,29 @@ func newPluginDeleteVersionCmd() *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// visibilityLabel converts the proto PluginVisibility enum into the
|
||||||
|
// lowercase, user-facing form ("private", "public", ...). Kept here in the
|
||||||
|
// CLI rather than in core/plugin so that external consumers of core/plugin
|
||||||
|
// don't transitively pull in core/internal/api/... — every such pull-in
|
||||||
|
// races with the orchestrator's own generated bindings of the same proto
|
||||||
|
// file at proto-registration time.
|
||||||
|
func visibilityLabel(v v1.PluginVisibility) string {
|
||||||
|
switch v {
|
||||||
|
case v1.PluginVisibility_PLUGIN_VISIBILITY_PRIVATE:
|
||||||
|
return "private"
|
||||||
|
case v1.PluginVisibility_PLUGIN_VISIBILITY_UNDER_REVIEW:
|
||||||
|
return "under_review"
|
||||||
|
case v1.PluginVisibility_PLUGIN_VISIBILITY_PUBLIC,
|
||||||
|
v1.PluginVisibility_PLUGIN_VISIBILITY_UNSPECIFIED:
|
||||||
|
return "public"
|
||||||
|
case v1.PluginVisibility_PLUGIN_VISIBILITY_REJECTED:
|
||||||
|
return "rejected"
|
||||||
|
case v1.PluginVisibility_PLUGIN_VISIBILITY_TAKEN_DOWN:
|
||||||
|
return "taken_down"
|
||||||
|
}
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
// parsePrivateCoord accepts either a bare plugin name ("myplugin") or the
|
// parsePrivateCoord accepts either a bare plugin name ("myplugin") or the
|
||||||
// canonical "@private/name" form and returns just the plugin name. Any other
|
// canonical "@private/name" form and returns just the plugin name. Any other
|
||||||
// scope is rejected to make accidental deletion of public plugins impossible.
|
// scope is rejected to make accidental deletion of public plugins impossible.
|
||||||
@ -740,7 +763,7 @@ func newPluginStatusCmd() *cobra.Command {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, p := range gs.Msg.Plugins {
|
for _, p := range gs.Msg.Plugins {
|
||||||
fmt.Printf(" @%s/%s [%s]\n", s.Slug, p.Name, core.VisibilityLabel(p.Visibility))
|
fmt.Printf(" @%s/%s [%s]\n", s.Slug, p.Name, visibilityLabel(p.Visibility))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -4,31 +4,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
tomlpkg "github.com/BurntSushi/toml"
|
tomlpkg "github.com/BurntSushi/toml"
|
||||||
|
|
||||||
v1 "git.dev.alexdunmow.com/block/core/internal/api/orchestrator/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// VisibilityLabel returns the lowercase, user-facing form of a PluginVisibility
|
|
||||||
// value (e.g. "private", "public", "under_review"). The default for the
|
|
||||||
// UNSPECIFIED zero value is "public", matching pre-enum behaviour for plugins
|
|
||||||
// that don't carry an explicit visibility.
|
|
||||||
func VisibilityLabel(v v1.PluginVisibility) string {
|
|
||||||
switch v {
|
|
||||||
case v1.PluginVisibility_PLUGIN_VISIBILITY_PRIVATE:
|
|
||||||
return "private"
|
|
||||||
case v1.PluginVisibility_PLUGIN_VISIBILITY_UNDER_REVIEW:
|
|
||||||
return "under_review"
|
|
||||||
case v1.PluginVisibility_PLUGIN_VISIBILITY_PUBLIC,
|
|
||||||
v1.PluginVisibility_PLUGIN_VISIBILITY_UNSPECIFIED:
|
|
||||||
return "public"
|
|
||||||
case v1.PluginVisibility_PLUGIN_VISIBILITY_REJECTED:
|
|
||||||
return "rejected"
|
|
||||||
case v1.PluginVisibility_PLUGIN_VISIBILITY_TAKEN_DOWN:
|
|
||||||
return "taken_down"
|
|
||||||
}
|
|
||||||
return "unknown"
|
|
||||||
}
|
|
||||||
|
|
||||||
type ModFile struct {
|
type ModFile struct {
|
||||||
Plugin ModPlugin `toml:"plugin"`
|
Plugin ModPlugin `toml:"plugin"`
|
||||||
Compatibility *ModCompat `toml:"compatibility"`
|
Compatibility *ModCompat `toml:"compatibility"`
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user