@@ -6,48 +6,16 @@ package main
66
77import (
88 "fmt"
9- "io"
109 "os"
1110
12- "flag"
13-
11+ deploymentmarkers "github.com/element-hq/ess-helm/matrix-tools/internal/cmd/deployment-markers"
12+ generatesecrets "github.com/element-hq/ess-helm/matrix-tools/internal/cmd/generate-secrets"
13+ renderconfig "github.com/element-hq/ess-helm/matrix-tools/internal/cmd/render-config"
14+ "github.com/element-hq/ess-helm/matrix-tools/internal/cmd/syn2mas"
15+ "github.com/element-hq/ess-helm/matrix-tools/internal/cmd/tcpwait"
1416 "github.com/element-hq/ess-helm/matrix-tools/internal/pkg/args"
15- "github.com/element-hq/ess-helm/matrix-tools/internal/pkg/marker"
16- "github.com/element-hq/ess-helm/matrix-tools/internal/pkg/renderer"
17- "github.com/element-hq/ess-helm/matrix-tools/internal/pkg/secret"
18- "github.com/element-hq/ess-helm/matrix-tools/internal/pkg/syn2mas"
19- "github.com/element-hq/ess-helm/matrix-tools/internal/pkg/tcpwait"
20- "github.com/pkg/errors"
21- "gopkg.in/yaml.v3"
22- "k8s.io/client-go/kubernetes"
23- "k8s.io/client-go/rest"
2417)
2518
26- func getKubernetesClient () (kubernetes.Interface , error ) {
27- config , err := rest .InClusterConfig ()
28- if err != nil {
29- return nil , err
30- }
31- clientset , err := kubernetes .NewForConfig (config )
32- if err != nil {
33- return nil , err
34- }
35- return clientset , nil
36- }
37-
38- func readFiles (paths []string ) ([]io.Reader , []func () error , error ) {
39- files := make ([]io.Reader , 0 )
40- closeFiles := make ([]func () error , 0 )
41- for _ , path := range paths {
42- fileReader , err := os .Open (path )
43- if err != nil {
44- return files , closeFiles , fmt .Errorf ("failed to open file: %w" , err )
45- }
46- files = append (files , fileReader )
47- closeFiles = append (closeFiles , fileReader .Close )
48- }
49- return files , closeFiles , nil
50- }
5119
5220func main () {
5321 options , err := args .ParseArgs (os .Args )
@@ -58,97 +26,15 @@ func main() {
5826
5927 switch options .Command {
6028 case args .RenderConfig :
61- fileReaders , closeFiles , err := readFiles (options .Files )
62- defer func () {
63- for _ , closeFn := range closeFiles {
64- err := closeFn ()
65- if err != nil {
66- fmt .Println ("Error closing file : " , err )
67- }
68- }
69- }()
70- if err != nil {
71- fmt .Println (err )
72- os .Exit (1 )
73- }
74- result , err := renderer .RenderConfig (fileReaders )
75- if err != nil {
76- if err == flag .ErrHelp {
77- flag .CommandLine .Usage ()
78- } else {
79- fmt .Println ("Error:" , err )
80- }
81- os .Exit (1 )
82- }
83- var outputYAML []byte
84- if outputYAML , err = yaml .Marshal (result ); err != nil {
85- fmt .Println ("Error marshalling merged config to YAML:" , err )
86- os .Exit (1 )
87- }
88-
89- fmt .Printf ("Rendering config to file: %v\n " , options .Output )
90- if os .Getenv ("DEBUG_RENDERING" ) == "1" {
91- fmt .Println (string (outputYAML ))
92- }
93- err = os .WriteFile (options .Output , outputYAML , 0440 )
94- if err != nil {
95- fmt .Println ("Error writing to file:" , err )
96- os .Exit (1 )
97- }
29+ renderconfig .Run (options .RenderConfig )
9830 case args .TCPWait :
99- tcpwait .WaitForTCP (options .Address )
31+ tcpwait .Run (options .TcpWait )
10032 case args .Syn2Mas :
101- clientset , err := getKubernetesClient ()
102- if err != nil {
103- fmt .Println ("Error getting Kubernetes client: " , err )
104- os .Exit (1 )
105- }
106- namespace := os .Getenv ("NAMESPACE" )
107- if namespace == "" {
108- fmt .Println ("Error, $NAMESPACE is not defined" )
109- os .Exit (1 )
110- }
111- syn2mas .RunSyn2MAS (clientset , namespace , options .SynapseConfig , options .MASConfig )
33+ syn2mas .Run (options .Syn2Mas )
11234 case args .GenerateSecrets :
113- clientset , err := getKubernetesClient ()
114- if err != nil {
115- fmt .Println ("Error getting Kubernetes client: " , err )
116- os .Exit (1 )
117- }
118- namespace := os .Getenv ("NAMESPACE" )
119- if namespace == "" {
120- fmt .Println ("Error, $NAMESPACE is not defined" )
121- os .Exit (1 )
122- }
123-
124- for _ , generatedSecret := range options .GeneratedSecrets {
125- err := secret .GenerateSecret (clientset , options .Labels , namespace , generatedSecret .Name , generatedSecret .Key , generatedSecret .Type )
126- if err != nil {
127- wrappedErr := errors .Wrapf (err , "error generating secret: %s" , generatedSecret .ArgValue )
128- fmt .Println ("Error:" , wrappedErr )
129- os .Exit (1 )
130- }
131- }
35+ generatesecrets .Run (options .GenerateSecrets )
13236 case args .DeploymentMarkers :
133- clientset , err := getKubernetesClient ()
134- if err != nil {
135- fmt .Println ("Error getting Kubernetes client: " , err )
136- os .Exit (1 )
137- }
138- namespace := os .Getenv ("NAMESPACE" )
139- if namespace == "" {
140- fmt .Println ("Error, $NAMESPACE is not defined" )
141- os .Exit (1 )
142- }
143-
144- for _ , depMarker := range options .DeploymentMarkers {
145- err := marker .GenerateConfigMap (clientset , options .Labels , namespace , depMarker .Name , depMarker .Key , depMarker .Step , depMarker .NewValue , depMarker .AllowedValues )
146- if err != nil {
147- wrappedErr := errors .Wrapf (err , "error generating configmap: %v" , depMarker )
148- fmt .Println ("Error:" , wrappedErr )
149- os .Exit (1 )
150- }
151- }
37+ deploymentmarkers .Run (options .DeploymentMarkers )
15238 default :
15339 fmt .Printf ("Unknown command" )
15440 os .Exit (1 )
0 commit comments