Update to comply with linter rules and gofmt

pull/3041/head
Johan Lyheden 7 years ago
parent d43d5ab452
commit f1a08adb41

@ -16,22 +16,23 @@ limitations under the License.
package installer // import "k8s.io/helm/pkg/plugin/installer"
import (
"k8s.io/helm/pkg/helm/helmpath"
"path/filepath"
"archive/tar"
"bytes"
"compress/gzip"
"fmt"
"io"
"k8s.io/helm/pkg/getter"
"k8s.io/helm/pkg/helm/environment"
"k8s.io/helm/pkg/helm/helmpath"
"k8s.io/helm/pkg/plugin/cache"
"compress/gzip"
"archive/tar"
"io"
"os"
"fmt"
"strings"
"bytes"
"path/filepath"
"regexp"
"strings"
)
type HttpInstaller struct {
// HTTPInstaller installs plugins from an archive served by a web server.
type HTTPInstaller struct {
CacheDir string
PluginName string
base
@ -39,13 +40,16 @@ type HttpInstaller struct {
getter getter.Getter
}
type TarGzExtractor struct {}
// TarGzExtractor extracts gzip compressed tar archives
type TarGzExtractor struct{}
// Extractor provides an interface for extracting archives
type Extractor interface {
Extract(buffer *bytes.Buffer, targetDir string) error
}
var Extractors = map[string]Extractor {
// Extractors contains a map of suffixes and matching implementations of extractor to return
var Extractors = map[string]Extractor{
".tar.gz": &TarGzExtractor{},
".tgz": &TarGzExtractor{},
}
@ -60,8 +64,8 @@ func NewExtractor(source string) (Extractor, error) {
return nil, fmt.Errorf("no extractor implemented yet for %s", source)
}
// NewHttpInstaller creates a new HttpInstaller.
func NewHttpInstaller(source string, home helmpath.Home) (*HttpInstaller, error) {
// NewHTTPInstaller creates a new HttpInstaller.
func NewHTTPInstaller(source string, home helmpath.Home) (*HTTPInstaller, error) {
key, err := cache.Key(source)
if err != nil {
@ -78,12 +82,12 @@ func NewHttpInstaller(source string, home helmpath.Home) (*HttpInstaller, error)
return nil, err
}
get, err := getConstructor.New(source,"", "", "")
get, err := getConstructor.New(source, "", "", "")
if err != nil {
return nil, err
}
i := &HttpInstaller{
i := &HTTPInstaller{
CacheDir: home.Path("cache", "plugins", key),
PluginName: stripPluginName(filepath.Base(source)),
base: newBase(source, home),
@ -106,10 +110,10 @@ func stripPluginName(name string) string {
return re.ReplaceAllString(strippedName, `$1`)
}
// Install() downloads and extracts the tarball into the cache directory and creates a symlink to the plugin directory in $HELM_HOME.
// Install downloads and extracts the tarball into the cache directory and creates a symlink to the plugin directory in $HELM_HOME.
//
// Implements Installer.
func (i *HttpInstaller) Install() error {
func (i *HTTPInstaller) Install() error {
pluginData, err := i.getter.Get(i.Source)
if err != nil {
@ -135,25 +139,25 @@ func (i *HttpInstaller) Install() error {
// Update updates a local repository
// Not implemented for now since tarball most likely will be packaged by version
func (i *HttpInstaller) Update() error {
func (i *HTTPInstaller) Update() error {
return fmt.Errorf("method Update() not implemented for HttpInstaller")
}
// Override link because we want to use HttpInstaller.Path() not base.Path()
func (i *HttpInstaller) link(from string) error {
func (i *HTTPInstaller) link(from string) error {
debug("symlinking %s to %s", from, i.Path())
return os.Symlink(from, i.Path())
}
// Override Path() because we want to join on the plugin name not the file name
func (i HttpInstaller) Path() string {
// Path is overridden because we want to join on the plugin name not the file name
func (i HTTPInstaller) Path() string {
if i.base.Source == "" {
return ""
}
return filepath.Join(i.base.HelmHome.Plugins(), i.PluginName)
}
// Extracts tar.gz archive
// Extract extracts compressed archives
//
// Implements Extractor.
func (g *TarGzExtractor) Extract(buffer *bytes.Buffer, targetDir string) error {
@ -194,7 +198,7 @@ func (g *TarGzExtractor) Extract(buffer *bytes.Buffer, targetDir string) error {
return err
}
default:
return fmt.Errorf("unknown type: %s in %s", header.Typeflag, header.Name)
return fmt.Errorf("unknown type: %b in %s", header.Typeflag, header.Name)
}
}

@ -16,22 +16,22 @@ limitations under the License.
package installer // import "k8s.io/helm/pkg/plugin/installer"
import (
"testing"
"io/ioutil"
"os"
"k8s.io/helm/pkg/helm/helmpath"
"bytes"
"encoding/base64"
"io/ioutil"
"k8s.io/helm/pkg/helm/helmpath"
"os"
"testing"
)
var _ Installer = new(HttpInstaller)
var _ Installer = new(HTTPInstaller)
// Fake http client
type TestHttpGetter struct {
type TestHTTPGetter struct {
MockResponse *bytes.Buffer
}
func (t *TestHttpGetter) Get(href string) (*bytes.Buffer, error) { return t.MockResponse, nil }
func (t *TestHTTPGetter) Get(href string) (*bytes.Buffer, error) { return t.MockResponse, nil }
// Fake plugin tarball data
var fakePluginB64 = "H4sIAKRj51kAA+3UX0vCUBgGcC9jn+Iwuk3Peza3GeyiUlJQkcogCOzgli7dJm4TvYk+a5+k479UqquUCJ/fLs549sLO2TnvWnJa9aXnjwujYdYLovxMhsPcfnHOLdNkOXthM/IVQQYjg2yyLLJ4kXGhLp5j0z3P41tZksqxmspL3B/O+j/XtZu1y8rdYzkOZRCxduKPk53ny6Wwz/GfIIf1As8lxzGJSmoHNLJZphKHG4YpTCE0wVk3DULfpSJ3DMMqkj3P5JfMYLdX1Vr9Ie/5E5cstcdC8K04iGLX5HaJuKpWL17F0TCIBi5pf/0pjtLhun5j3f9v6r7wfnI/H0eNp9d1/5P6Gez0vzo7wsoxfrAZbTny/o9k6J8z/VkO/LPlWdC1iVpbEEcq5nmeJ13LEtmbV0k2r2PrOs9PuuNglC5rL1Y5S/syXRQmutaNw1BGnnp8Wq3UG51WvX1da3bKtZtCN/R09DwAAAAAAAAAAAAAAAAAAADAb30AoMczDwAoAAA="
@ -51,7 +51,7 @@ func TestStripName(t *testing.T) {
}
}
func TestHttpInstaller(t *testing.T) {
func TestHTTPInstaller(t *testing.T) {
source := "https://repo.localdomain/plugins/fake-plugin-0.0.1.tar.gz"
hh, err := ioutil.TempDir("", "helm-home-")
if err != nil {
@ -70,7 +70,7 @@ func TestHttpInstaller(t *testing.T) {
}
// ensure a HttpInstaller was returned
httpInstaller, ok := i.(*HttpInstaller)
httpInstaller, ok := i.(*HTTPInstaller)
if !ok {
t.Error("expected a HttpInstaller")
}
@ -81,7 +81,7 @@ func TestHttpInstaller(t *testing.T) {
t.Fatalf("Could not decode fake tgz plugin: %s", err)
}
httpInstaller.getter = &TestHttpGetter{
httpInstaller.getter = &TestHTTPGetter{
MockResponse: bytes.NewBuffer(mockTgz),
}

@ -69,8 +69,8 @@ func NewForSource(source, version string, home helmpath.Home) (Installer, error)
// Check if source is a local directory
if isLocalReference(source) {
return NewLocalInstaller(source, home)
} else if isRemoteHttpArchive(source) {
return NewHttpInstaller(source, home)
} else if isRemoteHTTPArchive(source) {
return NewHTTPInstaller(source, home)
}
return NewVCSInstaller(source, version, home)
}
@ -90,10 +90,10 @@ func isLocalReference(source string) bool {
return err == nil
}
// isRemoteHttpArchive checks if the source is a http/https url and is an archive
func isRemoteHttpArchive(source string) bool {
// isRemoteHTTPArchive checks if the source is a http/https url and is an archive
func isRemoteHTTPArchive(source string) bool {
if strings.HasPrefix(source, "http://") || strings.HasPrefix(source, "https://") {
for suffix, _ := range Extractors {
for suffix := range Extractors {
if strings.HasSuffix(source, suffix) {
return true
}

Loading…
Cancel
Save