mirror of
https://github.com/turbot/steampipe.git
synced 2025-12-26 15:00:08 -05:00
50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/turbot/go-kit/helpers"
|
|
)
|
|
|
|
const maxSchemaNameLength = 63
|
|
|
|
// PluginFQNToSchemaName convert a full plugin name to a schema name
|
|
// schemas in postgres are limited to 63 chars - the name may be longer than this, in which case trim the length
|
|
// and add a hash to the end to make unique
|
|
func PluginFQNToSchemaName(pluginFQN string) string {
|
|
if len(pluginFQN) < maxSchemaNameLength {
|
|
return pluginFQN
|
|
}
|
|
|
|
schemaName := TrimSchemaName(pluginFQN) + fmt.Sprintf("-%x", helpers.StringFnvHash(pluginFQN))
|
|
return schemaName
|
|
}
|
|
|
|
func TrimSchemaName(pluginFQN string) string {
|
|
if len(pluginFQN) < maxSchemaNameLength {
|
|
return pluginFQN
|
|
}
|
|
|
|
return pluginFQN[:maxSchemaNameLength-9]
|
|
}
|
|
|
|
// GetPluginName function is used to get the plugin name required while
|
|
// installing/updating/removing a plugin. External plugins require the repo
|
|
// names to be prefixed(eg: francois2metz/scalingo).
|
|
// Sample input 1: hub.steampipe.io/plugins/francois2metz/scalingo@latest
|
|
// Sample output 1: francois2metz/scalingo
|
|
// Sample input 2: hub.steampipe.io/plugins/turbot/aws@latest
|
|
// Sample output 2: aws
|
|
func GetPluginName(plugin string) string {
|
|
repo := strings.Split(plugin, "/")[2]
|
|
p := strings.Split(plugin, "/")[3]
|
|
plugin_name := strings.Split(p, "@")[0]
|
|
|
|
if repo == "turbot" {
|
|
return plugin_name
|
|
}
|
|
|
|
return fmt.Sprintf("%s/%s", repo, plugin_name)
|
|
}
|