Files
oc-k8s/cmd/main.go

177 lines
4.0 KiB
Go
Raw Normal View History

2026-01-07 16:56:27 +01:00
package main
import (
2026-01-20 16:21:04 +01:00
"flag"
2026-01-07 16:56:27 +01:00
"fmt"
"oc-k8s/internal"
"os"
2026-01-20 16:21:04 +01:00
"slices"
2026-01-07 16:56:27 +01:00
)
func main() {
defer func() {
if r := recover(); r != nil {
}
}()
if len(os.Args) < 2 {
internal.Help_Func()
2026-01-20 16:21:04 +01:00
fmt.Println("Error: Not enough arguments")
2026-01-07 16:56:27 +01:00
return
}
if err := action(); err != nil {
2026-01-20 16:21:04 +01:00
if len(os.Args) > 2 && slices.Contains([]string{"start", "help", "stop"}, os.Args[1]) {
internal.Help_Func()
} else {
what := ""
if len(os.Args) > 2 {
what = os.Args[2]
}
switch what {
case "helm":
internal.Help_Helm()
case "k3s":
internal.Help_K3S()
case "kind":
internal.Help_Kind()
case "cluster":
internal.Help_Cluster()
case "db":
internal.Help_DB()
case "services":
internal.Help_Service()
case "values":
internal.Help_Values()
default:
internal.Help_Func()
}
flag.CommandLine.Parse(os.Args[3:])
}
fmt.Println("ERROR", err)
2026-01-07 16:56:27 +01:00
}
}
func action() error {
2026-01-20 16:21:04 +01:00
folder := flag.String("f", ".", "Folder to reach config/datas")
release := flag.String("r", "dev", "Release name in run")
namespace := flag.String("n", "dev", "Namespace in run")
branch := flag.String("b", "main", "Git branch/version of a OC build")
target := flag.String("y", "all", "Makefile build up mode")
dbName := flag.String("d", "opencloud", "DBName in use")
2026-01-21 12:03:02 +01:00
arch := flag.String("a", "amd64", "Arch expected")
version := flag.String("v", "v0.31.0", "version of arch")
2026-01-20 16:21:04 +01:00
confFile := flag.String("c", "", "Configuration files to map")
2026-01-21 12:03:02 +01:00
mUsr := flag.String("m", "admin", "Mongo user")
mPwd := flag.String("M", "admin", "Mongo password")
2026-01-20 16:21:04 +01:00
if len(os.Args) > 2 && slices.Contains([]string{"start", "help", "stop"}, os.Args[1]) {
flag.CommandLine.Parse(os.Args[2:])
} else if len(os.Args) > 3 {
flag.CommandLine.Parse(os.Args[3:])
} else {
flag.Parse()
}
2026-01-07 16:56:27 +01:00
action := os.Args[1]
switch action {
case "start":
2026-01-20 16:21:04 +01:00
internal.Start(*folder, *release, *namespace, *branch, *target)
2026-01-07 16:56:27 +01:00
case "stop":
2026-01-20 16:21:04 +01:00
internal.Stop(*folder, *release, *namespace)
2026-01-08 21:15:34 +01:00
case "extract":
what := os.Args[2]
switch what {
case "charts":
return internal.ExtractTrees("assets", "./opencloud-chart")
}
2026-01-07 16:56:27 +01:00
case "help":
2026-01-20 16:21:04 +01:00
what := ""
if len(os.Args) > 2 {
what = os.Args[2]
}
2026-01-07 16:56:27 +01:00
switch what {
case "helm":
internal.Help_Helm()
case "k3s":
internal.Help_K3S()
case "kind":
internal.Help_Kind()
case "cluster":
internal.Help_Cluster()
case "db":
internal.Help_DB()
case "services":
2026-01-08 21:15:34 +01:00
internal.Help_Service()
2026-01-07 16:56:27 +01:00
case "values":
internal.Help_Values()
default:
internal.Help_Func()
}
case "install":
2026-01-20 16:21:04 +01:00
what := ""
if len(os.Args) > 2 {
what = os.Args[2]
2026-01-08 21:15:34 +01:00
}
switch what {
case "helm":
return internal.Install_Helm()
case "k3s":
return internal.Install_K3S()
case "kind":
2026-01-20 16:21:04 +01:00
return internal.Install_Kind(*arch, *version)
2026-01-08 21:15:34 +01:00
default:
2026-01-20 16:21:04 +01:00
internal.Install_Func(*arch, *version)
2026-01-07 16:56:27 +01:00
}
case "create":
what := os.Args[2]
2026-01-20 16:21:04 +01:00
2026-01-07 16:56:27 +01:00
switch what {
case "helm":
2026-01-20 16:21:04 +01:00
return internal.Create_Helm(*folder, *release, *namespace)
2026-01-07 16:56:27 +01:00
case "cluster":
2026-01-20 16:21:04 +01:00
return internal.Create_Cluster(*folder, *release)
2026-01-07 16:56:27 +01:00
case "db":
2026-01-21 12:03:02 +01:00
return internal.Create_DB(folder, *release, *namespace, *dbName, *mUsr, *mPwd)
2026-01-07 16:56:27 +01:00
case "services":
2026-01-20 16:21:04 +01:00
return internal.Create_Service(*folder, *release, *branch, *target)
2026-01-07 16:56:27 +01:00
case "values":
2026-01-20 16:21:04 +01:00
return internal.Create_Values(folder, release, confFile)
2026-01-07 16:56:27 +01:00
default:
internal.Help_Func()
}
case "delete":
2026-01-20 16:21:04 +01:00
what := ""
if len(os.Args) > 2 {
what = os.Args[2]
2026-01-07 16:56:27 +01:00
}
switch what {
case "helm":
2026-01-20 16:21:04 +01:00
return internal.Delete_Helm(*release, *namespace)
2026-01-07 16:56:27 +01:00
case "cluster":
2026-01-20 16:21:04 +01:00
return internal.Delete_Cluster(*folder, *release)
2026-01-07 16:56:27 +01:00
case "db":
2026-01-21 12:03:02 +01:00
return internal.Delete_DB(*release, *namespace, *dbName, *mUsr, *mPwd)
2026-01-07 16:56:27 +01:00
default:
internal.Help_Func()
}
case "upgrade":
2026-01-20 16:21:04 +01:00
what := ""
if len(os.Args) > 2 {
what = os.Args[2]
2026-01-07 16:56:27 +01:00
}
switch what {
case "helm":
2026-01-20 16:21:04 +01:00
return internal.Upgrade_Helm(*folder, *release, *namespace)
2026-01-07 16:56:27 +01:00
case "db":
2026-01-21 12:03:02 +01:00
return internal.Upgrade_DB(folder, *release, *namespace, *dbName, *mUsr, *mPwd)
2026-01-07 16:56:27 +01:00
default:
internal.Help_Func()
}
default:
internal.Help_Func()
}
return nil
}