One file to rule them all
This commit is contained in:
@@ -2,24 +2,81 @@ package utils
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
//go:embed assets/*
|
||||
//go:embed assets/**/**/**/**/**/**/.*
|
||||
var FS11 embed.FS
|
||||
|
||||
//go:embed assets/**
|
||||
var FS10 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/**/.*
|
||||
var FS9 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/.*
|
||||
var FS8 embed.FS
|
||||
|
||||
//go:embed assets/**/**/.*
|
||||
var FS7 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/**/**/**/**/**/_*
|
||||
var FS6 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/**/**/**/**/_*
|
||||
var FS5 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/**/**/**/_*
|
||||
var FS4 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/**/**/_*
|
||||
var FS3 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/**/_*
|
||||
var FS2 embed.FS
|
||||
|
||||
//go:embed assets/**/**/**/_*
|
||||
var FS1 embed.FS
|
||||
|
||||
//go:embed assets
|
||||
var FS embed.FS
|
||||
|
||||
var FSS = []embed.FS{FS, FS1, FS2, FS3, FS4, FS5, FS6, FS7, FS8, FS9, FS10, FS11}
|
||||
|
||||
func Exec(args ...string) error {
|
||||
fArgs := []string{"-c"}
|
||||
if len(args) > 0 {
|
||||
fArgs = append(fArgs, args...)
|
||||
}
|
||||
cmd := exec.Command("bash", fArgs...)
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stderr = os.Stderr
|
||||
// Execute 'echo $HOME' in bash
|
||||
cmd := exec.Command("bash", "-c", "echo $HOME")
|
||||
out, err := cmd.Output()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
home := strings.TrimSpace(string(out))
|
||||
cmd2 := exec.Command("bash", fArgs...)
|
||||
if strings.Contains(args[0], "helm") {
|
||||
cmd2.Env = append(cmd2.Env, "HOME="+home)
|
||||
out, err := cmd2.Output()
|
||||
if err != nil {
|
||||
fmt.Println("ERR helm ", args[0], err)
|
||||
return err
|
||||
}
|
||||
fmt.Println("OUTPUT", string(out))
|
||||
return nil
|
||||
}
|
||||
// // inject HOME
|
||||
|
||||
return cmd.Run()
|
||||
cmd2.Stdin = os.Stdin
|
||||
cmd2.Stderr = os.Stderr
|
||||
|
||||
return cmd2.Run()
|
||||
}
|
||||
|
||||
func ReadFS(filePath string) (string, error) {
|
||||
@@ -45,3 +102,31 @@ func Extract(content string, key string) (string, bool) {
|
||||
|
||||
return strings.TrimSpace(content[start : start+end]), true
|
||||
}
|
||||
|
||||
type Chart struct {
|
||||
Dependencies []struct {
|
||||
Name string `yaml:"name"`
|
||||
Version string `yaml:"version"`
|
||||
Repository string `yaml:"repository"`
|
||||
} `yaml:"dependencies"`
|
||||
}
|
||||
|
||||
func ExtractRepo() map[string]string {
|
||||
repos := make(map[string]string) // to avoid duplicates
|
||||
|
||||
// Walk through embedded charts
|
||||
data, err := FS.ReadFile("assets/Chart.yaml")
|
||||
if err != nil {
|
||||
return repos
|
||||
}
|
||||
|
||||
var chart Chart
|
||||
if err := yaml.Unmarshal(data, &chart); err != nil {
|
||||
return repos
|
||||
}
|
||||
|
||||
for _, dep := range chart.Dependencies {
|
||||
repos[dep.Name] = dep.Repository
|
||||
}
|
||||
return repos
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user