One file to rule them all

This commit is contained in:
mr
2026-01-08 21:15:34 +01:00
parent ec5c2972c3
commit 8098a86dae
982 changed files with 4169 additions and 60 deletions

View File

@@ -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
}