Skip to content

Commit

Permalink
CLI support for KOTS helm charts
Browse files Browse the repository at this point in the history
  • Loading branch information
emosbaugh committed Jan 9, 2020
1 parent 0176226 commit 66e36d3
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 55 deletions.
74 changes: 47 additions & 27 deletions cli/cmd/release_create.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cmd

import (
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
Expand Down Expand Up @@ -79,36 +80,13 @@ func (r *runners) releaseCreate(cmd *cobra.Command, args []string) error {
if r.args.createReleaseYamlDir != "" {
var allKotsReleaseSpecs []kotsSingleSpec
err := filepath.Walk(r.args.createReleaseYamlDir, func(path string, info os.FileInfo, err error) error {

singlefile := strings.TrimPrefix(path, r.args.createReleaseYamlDir)

spec, err := encodeKotsFile(r.args.createReleaseYamlDir, path, info, err)
if err != nil {
return errors.Wrapf(err, "walk %s", info.Name())
}

if info.IsDir() {
return nil
}
if strings.HasPrefix(info.Name(), ".") {
return nil
}
ext := filepath.Ext(info.Name())
if ext != ".yaml" && ext != ".yml" {
return err
} else if spec == nil {
return nil
}

bytes, err := ioutil.ReadFile(path)
if err != nil {
return errors.Wrapf(err, "read file %s", path)
}

spec := kotsSingleSpec{
Name: info.Name(),
Path: singlefile,
Content: string(bytes),
Children: []string{},
}
allKotsReleaseSpecs = append(allKotsReleaseSpecs, spec)
allKotsReleaseSpecs = append(allKotsReleaseSpecs, *spec)
return nil
})
if err != nil {
Expand Down Expand Up @@ -204,3 +182,45 @@ func (r *runners) getOrCreateChannelForPromotion() (string, error) {
}
return promoteChannelIDs[0], nil
}

func encodeKotsFile(prefix, path string, info os.FileInfo, err error) (*kotsSingleSpec, error) {
if err != nil {
return nil, err
}

singlefile := strings.TrimPrefix(path, prefix)

if info.IsDir() {
return nil, nil
}
if strings.HasPrefix(info.Name(), ".") {
return nil, nil
}
ext := filepath.Ext(info.Name())
switch ext {
case ".tgz", ".gz", ".yaml", ".yml":
// continue
default:
return nil, nil
}

bytes, err := ioutil.ReadFile(path)
if err != nil {
return nil, errors.Wrapf(err, "read file %s", path)
}

var str string
switch ext {
case ".tgz", ".gz":
str = base64.StdEncoding.EncodeToString(bytes)
default:
str = string(bytes)
}

return &kotsSingleSpec{
Name: info.Name(),
Path: singlefile,
Content: str,
Children: []string{},
}, nil
}
32 changes: 4 additions & 28 deletions cli/cmd/release_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"os"
"path/filepath"
"strconv"
"strings"

"github.com/pkg/errors"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -65,36 +64,13 @@ func (r *runners) releaseUpdate(cmd *cobra.Command, args []string) error {
if r.args.updateReleaseYamlDir != "" {
var allKotsReleaseSpecs []kotsSingleSpec
err := filepath.Walk(r.args.updateReleaseYamlDir, func(path string, info os.FileInfo, err error) error {

singlefile := strings.TrimPrefix(path, r.args.updateReleaseYamlDir)

spec, err := encodeKotsFile(r.args.createReleaseYamlDir, path, info, err)
if err != nil {
return errors.Wrapf(err, "walk %s", info.Name())
}

if info.IsDir() {
return err
} else if spec == nil {
return nil
}
if strings.HasPrefix(info.Name(), ".") {
return nil
}
ext := filepath.Ext(info.Name())
if ext != ".yaml" && ext != ".yml" {
return nil
}

bytes, err := ioutil.ReadFile(path)
if err != nil {
return errors.Wrapf(err, "read file %s", path)
}

spec := kotsSingleSpec{
Name: info.Name(),
Path: singlefile,
Content: string(bytes),
Children: []string{},
}
allKotsReleaseSpecs = append(allKotsReleaseSpecs, spec)
allKotsReleaseSpecs = append(allKotsReleaseSpecs, *spec)
return nil
})
if err != nil {
Expand Down

0 comments on commit 66e36d3

Please sign in to comment.