mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 17:43:35 -06:00
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
|
package repo
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// Service is responsible for retrieving plugin information from a repository.
|
||
|
type Service interface {
|
||
|
// GetPluginArchive fetches the requested plugin archive.
|
||
|
GetPluginArchive(ctx context.Context, pluginID, version string, opts CompatOpts) (*PluginArchive, error)
|
||
|
// GetPluginArchiveByURL fetches the requested plugin from the specified URL.
|
||
|
GetPluginArchiveByURL(ctx context.Context, archiveURL string, opts CompatOpts) (*PluginArchive, error)
|
||
|
// GetPluginDownloadOptions fetches information for downloading the requested plugin.
|
||
|
GetPluginDownloadOptions(ctx context.Context, pluginID, version string, opts CompatOpts) (*PluginDownloadOptions, error)
|
||
|
}
|
||
|
|
||
|
type CompatOpts struct {
|
||
|
GrafanaVersion string
|
||
|
OS string
|
||
|
Arch string
|
||
|
}
|
||
|
|
||
|
func NewCompatOpts(grafanaVersion, os, arch string) CompatOpts {
|
||
|
return CompatOpts{
|
||
|
GrafanaVersion: grafanaVersion,
|
||
|
OS: os,
|
||
|
Arch: arch,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (co CompatOpts) OSAndArch() string {
|
||
|
return fmt.Sprintf("%s-%s", strings.ToLower(co.OS), co.Arch)
|
||
|
}
|
||
|
|
||
|
func (co CompatOpts) String() string {
|
||
|
return fmt.Sprintf("Grafana v%s %s", co.GrafanaVersion, co.OSAndArch())
|
||
|
}
|