فهرست منبع

fix(cli): show plugin fail in standard build tag

Signed-off-by: Jiyong Huang <huangjy@emqx.io>
Jiyong Huang 2 سال پیش
والد
کامیت
21e6a55f06

+ 10 - 2
internal/server/rpc_plugin.go

@@ -13,8 +13,6 @@
 // limitations under the License.
 
 //go:build (rpc || !core) && (plugin || portable || !core)
-// +build rpc !core
-// +build plugin portable !core
 
 package server
 
@@ -90,6 +88,16 @@ func (t *Server) DescPlugin(arg *model.PluginDesc, reply *string) error {
 	return nil
 }
 
+func (t *Server) ShowPlugins(arg int, reply *string) error {
+	pt := plugin.PluginType(arg)
+	l, err := t.doShow(pt)
+	if err != nil {
+		return fmt.Errorf("Show plugin error: %s", err)
+	}
+	*reply = l
+	return nil
+}
+
 func getPluginByJson(arg *model.PluginDesc, pt plugin.PluginType) (plugin.Plugin, error) {
 	p := plugin.NewPluginByType(pt)
 	if arg.Json != "" {

+ 22 - 1
internal/server/rpc_plugin_both.go

@@ -13,13 +13,14 @@
 // limitations under the License.
 
 //go:build !core || (rpc && portable && plugin)
-// +build !core rpc,portable,plugin
 
 package server
 
 import (
+	"encoding/json"
 	"fmt"
 	"github.com/lf-edge/ekuiper/internal/plugin"
+	"strings"
 )
 
 func (t *Server) doRegister(pt plugin.PluginType, p plugin.Plugin) error {
@@ -53,3 +54,23 @@ func (t *Server) doDesc(pt plugin.PluginType, name string) (interface{}, error)
 	}
 	return result, nil
 }
+
+func (t *Server) doShow(pt plugin.PluginType) (string, error) {
+	var result string
+	if pt == plugin.PORTABLE {
+		l := portableManager.List()
+		jb, err := json.Marshal(l)
+		if err != nil {
+			return "", err
+		}
+		return string(jb), nil
+	} else {
+		l := nativeManager.List(pt)
+		if len(l) == 0 {
+			result = "No plugin is found."
+		} else {
+			result = strings.Join(l, "\n")
+		}
+		return result, nil
+	}
+}

+ 68 - 0
internal/server/rpc_plugin_hasnative.go

@@ -0,0 +1,68 @@
+// Copyright 2022 EMQ Technologies Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//go:build !core || (rpc && plugin)
+
+package server
+
+import (
+	"fmt"
+	"github.com/lf-edge/ekuiper/internal/pkg/model"
+	"github.com/lf-edge/ekuiper/internal/plugin"
+	"strings"
+)
+
+func (t *Server) RegisterPlugin(arg *model.PluginDesc, reply *string) error {
+	p, err := getPluginByJson(arg, plugin.FUNCTION)
+	if err != nil {
+		return fmt.Errorf("Register plugin functions error: %s", err)
+	}
+	if len(p.GetSymbols()) == 0 {
+		return fmt.Errorf("Register plugin functions error: Missing function list.")
+	}
+	err = nativeManager.RegisterFuncs(p.GetName(), p.GetSymbols())
+	if err != nil {
+		return fmt.Errorf("Create plugin error: %s", err)
+	} else {
+		*reply = fmt.Sprintf("Plugin %s is created.", p.GetName())
+	}
+	return nil
+}
+
+func (t *Server) ShowUdfs(_ int, reply *string) error {
+	l := nativeManager.ListSymbols()
+	if len(l) == 0 {
+		l = append(l, "No udf is found.")
+	}
+	*reply = strings.Join(l, "\n")
+	return nil
+}
+
+func (t *Server) DescUdf(arg string, reply *string) error {
+	m, ok := nativeManager.GetPluginBySymbol(plugin.FUNCTION, arg)
+	if !ok {
+		return fmt.Errorf("Describe udf error: not found")
+	} else {
+		j := map[string]string{
+			"name":   arg,
+			"plugin": m,
+		}
+		r, err := marshalDesc(j)
+		if err != nil {
+			return fmt.Errorf("Describe udf error: %v", err)
+		}
+		*reply = r
+	}
+	return nil
+}

+ 10 - 50
internal/server/rpc_plugin_native.go

@@ -19,7 +19,6 @@ package server
 
 import (
 	"fmt"
-	"github.com/lf-edge/ekuiper/internal/pkg/model"
 	"github.com/lf-edge/ekuiper/internal/plugin"
 	"strings"
 )
@@ -52,56 +51,17 @@ func (t *Server) doDesc(pt plugin.PluginType, name string) (interface{}, error)
 	}
 }
 
-func (t *Server) RegisterPlugin(arg *model.PluginDesc, reply *string) error {
-	p, err := getPluginByJson(arg, plugin.FUNCTION)
-	if err != nil {
-		return fmt.Errorf("Register plugin functions error: %s", err)
-	}
-	if len(p.GetSymbols()) == 0 {
-		return fmt.Errorf("Register plugin functions error: Missing function list.")
-	}
-	err = nativeManager.RegisterFuncs(p.GetName(), p.GetSymbols())
-	if err != nil {
-		return fmt.Errorf("Create plugin error: %s", err)
-	} else {
-		*reply = fmt.Sprintf("Plugin %s is created.", p.GetName())
-	}
-	return nil
-}
-
-func (t *Server) ShowPlugins(arg int, reply *string) error {
-	pt := plugin.PluginType(arg)
-	l := nativeManager.List(pt)
-	if len(l) == 0 {
-		l = append(l, "No plugin is found.")
-	}
-	*reply = strings.Join(l, "\n")
-	return nil
-}
-
-func (t *Server) ShowUdfs(_ int, reply *string) error {
-	l := nativeManager.ListSymbols()
-	if len(l) == 0 {
-		l = append(l, "No udf is found.")
-	}
-	*reply = strings.Join(l, "\n")
-	return nil
-}
-
-func (t *Server) DescUdf(arg string, reply *string) error {
-	m, ok := nativeManager.GetPluginBySymbol(plugin.FUNCTION, arg)
-	if !ok {
-		return fmt.Errorf("Describe udf error: not found")
+func (t *Server) doShow(pt plugin.PluginType) (string, error) {
+	var result string
+	if pt == plugin.PORTABLE {
+		return "", fmt.Errorf("portable plugin support is disabled")
 	} else {
-		j := map[string]string{
-			"name":   arg,
-			"plugin": m,
-		}
-		r, err := marshalDesc(j)
-		if err != nil {
-			return fmt.Errorf("Describe udf error: %v", err)
+		l := nativeManager.List(pt)
+		if len(l) == 0 {
+			result = "No plugin is found."
+		} else {
+			result = strings.Join(l, "\n")
 		}
-		*reply = r
+		return result, nil
 	}
-	return nil
 }

+ 14 - 0
internal/server/rpc_plugin_portable.go

@@ -18,6 +18,7 @@
 package server
 
 import (
+	"encoding/json"
 	"fmt"
 	"github.com/lf-edge/ekuiper/internal/plugin"
 )
@@ -49,3 +50,16 @@ func (t *Server) doDesc(pt plugin.PluginType, name string) (interface{}, error)
 		return nil, fmt.Errorf("native plugin support is disabled")
 	}
 }
+
+func (t *Server) doShow(pt plugin.PluginType) (string, error) {
+	if pt == plugin.PORTABLE {
+		l := portableManager.List()
+		jb, err := json.Marshal(l)
+		if err != nil {
+			return "", err
+		}
+		return string(jb), nil
+	} else {
+		return "", fmt.Errorf("native plugin support is disabled")
+	}
+}