Skip to content
Snippets Groups Projects
main.go 1.28 KiB
Newer Older
Hugo Renard's avatar
Hugo Renard committed
package main

import (
	"context"
	"fmt"
	"os"
	"path"

	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	applycorev1 "k8s.io/client-go/applyconfigurations/core/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/rest"
)

func main() {
	if len(os.Args) != 3 {
		panic("Wrong args number")
	}

	sprocket := os.Args[1]
	serviceWorker := os.Args[2]

	sprocketContent, err := os.ReadFile(sprocket)
	if err != nil {
		panic(err)
	}
	serviceWorkerContent, err := os.ReadFile(serviceWorker)
	if err != nil {
		panic(err)
	}

	config, err := rest.InClusterConfig()
	if err != nil {
		panic(err.Error())
	}
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err.Error())
	}

	apply := applycorev1.ConfigMap(os.Getenv("ASSETS_CONFIGMAP_NAME"), os.Getenv("KUBERNETES_NAMESPACE"))
	apply.Data = make(map[string]string)
	apply.Data[".sprockets-manifest-00000000000000000000000000000000.json"] = string(sprocketContent)
	apply.Data[path.Base(serviceWorker)] = string(serviceWorkerContent)

	_, err = clientset.CoreV1().ConfigMaps(os.Getenv("KUBERNETES_NAMESPACE")).
		Apply(context.Background(), apply, metav1.ApplyOptions{
			FieldManager: "refresh-assets-script",
			Force:        true,
		})
	if err != nil {
		panic(err)
	}

	fmt.Printf("ConfigMap %s updated\n", os.Getenv("ASSETS_CONFIGMAP_NAME"))
}