124 lines
2.7 KiB
Go
124 lines
2.7 KiB
Go
package internal
|
|
|
|
import (
|
|
"embed"
|
|
"fmt"
|
|
"io"
|
|
"io/fs"
|
|
"oc-k8s/utils"
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
)
|
|
|
|
func Help_Func() {
|
|
fmt.Println(`
|
|
Main commands: oc-k8s <action>
|
|
install - Install opencloud dependancies [arch] [version]
|
|
start - Start opencloud k8s
|
|
stop - Stop opencloud k8s
|
|
Usage:
|
|
oc-k8s install -a [arch] -v [version]
|
|
arch - Arch of OS (required)
|
|
kind_version - version of kind (required)
|
|
oc-k8s start -n [namespace] -r [release] -f [folder] -b [branch] -t [target] -p [port] -P [portTLS]
|
|
folder - Helm config folder (required, default: .)
|
|
release - environnement selected (default: dev)
|
|
namespace - namespace selected (default: dev)
|
|
branch - Git branch to build (default: main)
|
|
target - make target (default: all)
|
|
oc-k8s stop -n [namespace] -r [release] -f [folder]
|
|
folder - Helm config folder (required, default: .)
|
|
release - environnement selected (default: dev)
|
|
namespace - namespace selected (default: dev)`)
|
|
Help_Cluster()
|
|
Help_Service()
|
|
Help_Helm()
|
|
Help_Values()
|
|
Help_K3S()
|
|
Help_Kind()
|
|
Help_DB()
|
|
}
|
|
|
|
func Start(folder string, release string, namespace string, branch string, target string) error {
|
|
Stop(folder, release, namespace)
|
|
Create_K3S()
|
|
Create_Cluster(folder, release)
|
|
Create_Service(folder, release, branch, target)
|
|
Create_Helm(folder, release, namespace)
|
|
return nil
|
|
}
|
|
|
|
func Stop(folder string, release string, namespace string) error {
|
|
Delete_Helm(release, namespace)
|
|
Delete_Cluster(folder, release)
|
|
return nil
|
|
}
|
|
|
|
func Install_Func(arch string, version string) error {
|
|
Install_K3S()
|
|
Install_Kind(arch, version)
|
|
Install_Helm()
|
|
return nil
|
|
}
|
|
|
|
func ExtractTrees(src, dst string) error {
|
|
for i, fs := range utils.FSS {
|
|
fmt.Printf("\rExtract temporary Charts: %d/11", i)
|
|
if err := ExtractTree(fs, "assets", dst); err != nil {
|
|
continue
|
|
}
|
|
}
|
|
fmt.Print("\n")
|
|
return nil
|
|
}
|
|
|
|
func ExtractTree(FS embed.FS, src, dst string) error {
|
|
seen := map[string]bool{}
|
|
if err := os.MkdirAll(dst, 0755); err != nil {
|
|
return err
|
|
}
|
|
entries, err := fs.ReadDir(FS, src)
|
|
if err != nil {
|
|
return err // src may not exist in this FS
|
|
}
|
|
|
|
for _, e := range entries {
|
|
srcPath := path.Join(src, e.Name())
|
|
dstPath := filepath.Join(dst, e.Name())
|
|
|
|
if seen[dstPath] {
|
|
continue // already copied
|
|
}
|
|
|
|
if e.IsDir() {
|
|
if err := ExtractTree(FS, srcPath, dstPath); err != nil {
|
|
continue
|
|
}
|
|
continue
|
|
}
|
|
|
|
in, err := FS.Open(srcPath)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
out, err := os.Create(dstPath)
|
|
if err != nil {
|
|
in.Close()
|
|
continue
|
|
}
|
|
|
|
if _, err := io.Copy(out, in); err != nil {
|
|
in.Close()
|
|
out.Close()
|
|
continue
|
|
}
|
|
in.Close()
|
|
out.Close()
|
|
|
|
seen[dstPath] = true
|
|
}
|
|
|
|
return nil
|
|
}
|