diff --git a/cmd/root.go b/cmd/root.go index 7ccfc00..4ac0190 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -6,7 +6,7 @@ import ( "os" "git.badhouseplants.net/allanger/shoebill/internal/build" - "github.com/spf13/cobra" + "github.com/spf13/cobra" ) var fullVersion = fmt.Sprintf("%s - %s", build.Version, build.CommitHash) diff --git a/go.mod b/go.mod index 97eb748..de4cbd7 100644 --- a/go.mod +++ b/go.mod @@ -88,6 +88,7 @@ require ( github.com/fluxcd/pkg/apis/acl v0.1.0 // indirect github.com/fluxcd/pkg/apis/kustomize v1.2.0 // indirect github.com/fluxcd/pkg/apis/meta v1.2.0 // indirect + github.com/frankban/quicktest v1.14.6 // indirect github.com/getsops/gopgagent v0.0.0-20170926210634-4d7ea76ff71a // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -106,7 +107,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect @@ -170,6 +171,7 @@ require ( github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.10.1 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rubenv/sql-migrate v1.3.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect @@ -188,16 +190,16 @@ require ( go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect - golang.org/x/crypto v0.16.0 // indirect - golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.19.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/term v0.15.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.9.3 // indirect + golang.org/x/tools v0.22.1-0.20240628205440-9c895dd76b34 // indirect google.golang.org/api v0.141.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect diff --git a/go.sum b/go.sum index 272baa5..247e3ea 100644 --- a/go.sum +++ b/go.sum @@ -240,8 +240,9 @@ github.com/fluxcd/pkg/apis/meta v1.2.0/go.mod h1:fU/Az9AoVyIxC0oI4ihG0NVMNnvrcCz github.com/fluxcd/source-controller/api v1.0.1 h1:nycylbNBnQd+EO4UHpqXqAQJ1cGAPxgBbrfERCQ1pp8= github.com/fluxcd/source-controller/api v1.0.1/go.mod h1:rAY5FRFGZUKpIFNyYANHIgPgJPvbALBHWsq/zHw/cXQ= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/getsops/gopgagent v0.0.0-20170926210634-4d7ea76ff71a h1:qc+7TV35Pq/FlgqECyS5ywq8cSN9j1fwZg6uyZ7G0B0= @@ -357,8 +358,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -662,7 +664,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rubenv/sql-migrate v1.3.1 h1:Vx+n4Du8X8VTYuXbhNxdEUoh6wiJERA0GlWocR5FrbA= github.com/rubenv/sql-migrate v1.3.1/go.mod h1:YzG/Vh82CwyhTFXy+Mf5ahAiiEOpAlHurg+23VEzcsk= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -794,8 +797,8 @@ golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4 golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -833,8 +836,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -882,8 +885,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -911,8 +914,8 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -978,8 +981,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -987,8 +990,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1002,8 +1005,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1065,8 +1068,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.22.1-0.20240628205440-9c895dd76b34 h1:Kd+Z5Pm6uwYx3T2KEkeHMHUMZxDPb/q6b1m+zEcy62c= +golang.org/x/tools v0.22.1-0.20240628205440-9c895dd76b34/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/internal/controller/controller.go b/internal/controller/controller.go index 1ccff76..cc7da20 100644 --- a/internal/controller/controller.go +++ b/internal/controller/controller.go @@ -25,30 +25,24 @@ func ReadTheConfig(path string) (*config.Config, error) { return conf, nil } -// func cloneSnapshoot(gh githelper.Githelper, snapshotDir, snapshotBranch string) error { - // if err := gh.CloneRepo(snapshotBranch, snapshotUrl, false); err != nil { - // return err - // } - // return nil -// } - func Sync(definedWorkdirPath, sshKeyPath string, conf *config.Config, dry bool, diffArg string) error { // Start by creating a directory where everything should be happening configPath := filepath.Dir(conf.ConfigPath) + workdirPath, err := workdir.CreateWorkdir(definedWorkdirPath) if err != nil { return err } - // Prepare helm repositories - for _, repository := range conf.Repositories { - if err := repository.KindFromUrl(); err != nil { - return err - } - } - if err := conf.Charts.PopulateRepositories(conf.Repositories); err != nil { - return err - } + //for _, release := range conf.Releases { + // // repo := release.PopulateRepository(Repo) + // // release.Pull(repo) + // + //} + + //if err := conf.Charts.PopulateRepositories(conf.Repositories); err != nil { + // return err + //} if err := conf.Releases.PopulateCharts(conf.Charts); err != nil { return err @@ -69,13 +63,11 @@ func Sync(definedWorkdirPath, sshKeyPath string, conf *config.Config, dry bool, logrus.Info("AFTER") } - - // Configure a git client gh := githelper.NewGit(sshKeyPath) // if len(diffArg) > 0 { - // snapshotDir := fmt.Sprint("%s/.snapshot", workdirPath) - // cloneSnapshoot(gh, snapshotDir, diffArg) + // snapshotDir := fmt.Sprint("%s/.snapshot", workdirPath) + // cloneSnapshoot(gh, snapshotDir, diffArg) // } // The main logic starts here diff --git a/internal/utils/workdir/workdir.go b/internal/utils/workdir/workdir.go index 55ab37b..d00ce5f 100644 --- a/internal/utils/workdir/workdir.go +++ b/internal/utils/workdir/workdir.go @@ -8,17 +8,15 @@ func CreateWorkdir(path string) (workdir string, err error) { if err := os.Mkdir(path, 0777); err != nil { return path, err } - // TODO(@allanger): I've got a feeling that it doesn't have to look that bad - workdir = path + return path, nil } else { // Create a temporary dir workdir, err = os.MkdirTemp("", "shoebill") if err != nil { - return workdir, err + return "", err } - + return workdir, nil } - return workdir, nil } func RemoveWorkdir(path string) (err error) { diff --git a/main.go b/main.go index d26347f..e791bfc 100644 --- a/main.go +++ b/main.go @@ -1,15 +1,16 @@ package main import ( - "context" + "context" "git.badhouseplants.net/allanger/shoebill/cmd" "github.com/sirupsen/logrus" ) - +// asfasdf func main() { - ctx := context.Background() + var ctx context.Context + ctx = context.Background() if err := cmd.Execute(ctx); err != nil { - logrus.Fatal(err) + logrus.Fatal(err) } } diff --git a/pkg/config/config.go b/pkg/config/config.go index f38d256..b3ec6f8 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -7,13 +7,12 @@ import ( "git.badhouseplants.net/allanger/shoebill/pkg/cluster" "git.badhouseplants.net/allanger/shoebill/pkg/mirror" "git.badhouseplants.net/allanger/shoebill/pkg/release" - "git.badhouseplants.net/allanger/shoebill/pkg/repository" "github.com/sirupsen/logrus" "gopkg.in/yaml.v2" ) type Config struct { - Repositories repository.Repositories + Repositories Repositories Releases release.Releases Clusters cluster.Clusters Charts chart.Charts diff --git a/pkg/config/repository.go b/pkg/config/repository.go new file mode 100644 index 0000000..f1162f2 --- /dev/null +++ b/pkg/config/repository.go @@ -0,0 +1,40 @@ +package config + +import ( + "fmt" +) + +/* +* Helm repo kinds: default/oci + */ +const ( + HELM_REPO_OCI = "oci" + HELM_REPO_DEFAULT = "default" +) + +type Repository struct { + Name string + Helm *RepositoryHelm + Git *RepositoryGit +} + +type RepositoryHelm struct { + URL string +} + +type RepositoryGit struct { + URL string + // Git ref + Ref string + // Path inside a git repo + Path string +} + +type Repositories []*Repository + +func (r *Repository) ValidateConfig() error { + if r.Helm != nil && r.Git != nil { + return fmt.Errorf("repo %s is invalid, only one repo kind can be specified", r.Name) + } + return nil +} diff --git a/pkg/config/repository_test.go b/pkg/config/repository_test.go new file mode 100644 index 0000000..3139046 --- /dev/null +++ b/pkg/config/repository_test.go @@ -0,0 +1,56 @@ +package config_test + +import ( + "fmt" + "testing" + + "git.badhouseplants.net/allanger/shoebill/pkg/config" + "github.com/stretchr/testify/assert" +) + +func TestBothRepoKindsError(t *testing.T) { + repo := &config.Repository{ + Name: "test", + Helm: &config.RepositoryHelm{ + URL: "test", + }, + Git: &config.RepositoryGit{ + URL: "test", + Ref: "test", + Path: "test", + }, + } + err := repo.ValidateConfig() + + assert.ErrorContains(t, err, + "repo test is invalid, only one repo kind can be specified", + fmt.Sprintf("haven't got an unexpected err: %s", err)) +} + +func TestHelmRepoNoError(t *testing.T) { + repo := &config.Repository{ + Name: "test", + Helm: &config.RepositoryHelm{ + URL: "test", + }, + } + err := repo.ValidateConfig() + + assert.NoError(t, err, + fmt.Sprintf("got an unexpected err: %s", err)) +} + +func TestGitRepoNoError(t *testing.T) { + repo := &config.Repository{ + Name: "test", + Git: &config.RepositoryGit{ + URL: "test", + Ref: "test", + Path: "test", + }, + } + err := repo.ValidateConfig() + + assert.NoError(t, err, + fmt.Sprintf("got an unexpected err: %s", err)) +} diff --git a/pkg/release/release.go b/pkg/release/release.go index cbf08f5..ada5e65 100644 --- a/pkg/release/release.go +++ b/pkg/release/release.go @@ -10,6 +10,7 @@ import ( "git.badhouseplants.net/allanger/shoebill/internal/utils/helmhelper" "git.badhouseplants.net/allanger/shoebill/internal/utils/sopshelper" "git.badhouseplants.net/allanger/shoebill/pkg/chart" + "git.badhouseplants.net/allanger/shoebill/pkg/config" "git.badhouseplants.net/allanger/shoebill/pkg/lockfile" "git.badhouseplants.net/allanger/shoebill/pkg/mirror" "git.badhouseplants.net/allanger/shoebill/pkg/repository" @@ -31,18 +32,18 @@ type Release struct { Values []string // Secrets SOPS encrypted Secrets []string - Mirror string + Mirror string // Private fields that should be pupulated during the run-time RepositoryObj *repository.Repository `yaml:"-"` - ChartObj *chart.Chart `yaml:"-"` + ChartObj *chart.Chart `yaml:"-"` DestValues ValuesHolders `yaml:"-"` DestSecrets ValuesHolders `yaml:"-"` } func (r *Release) ToHelmReleaseData() *helmhelper.ReleaseData { - // valuesData = + // valuesData = // for _, data := range r.DestValues { - + // } return &helmhelper.ReleaseData{ Name: r.Release, @@ -92,7 +93,7 @@ func (r *Release) MirrorObjFromName(mirrors mirror.Mirrors) error { if mir.Name == r.Mirror { r.RepositoryObj = &repository.Repository{ Name: mir.Name, - URL: fmt.Sprintf("%s/%s", mir.OCI.URL, mir.OCI.Prefix), + URL: fmt.Sprintf("%s/%s", mir.OCI.URL, mir.OCI.Prefix), } } } @@ -248,16 +249,16 @@ func (src Releases) Diff(dest Releases) Diff { return diff } -func (rs *Releases) PopulateRepositories(repos repository.Repositories, mirrors mirror.Mirrors) error { +func (rs *Releases) PopulateRepositories(repos config.Repositories, mirrors mirror.Mirrors) error { for _, r := range *rs { if len(r.Mirror) > 0 { if err := r.MirrorObjFromName(mirrors); err != nil { return err } } else { - if err := r.RepositoryObjFromName(repos); err != nil { - return err - } + if err := r.RepositoryObjFromName(repos); err != nil { + return err + } } } return nil diff --git a/shoebill.yaml b/shoebill.yaml index 4acd5ad..ffa4923 100644 --- a/shoebill.yaml +++ b/shoebill.yaml @@ -1,117 +1,17 @@ --- repositories: - - name: metrics-server - url: https://kubernetes-sigs.github.io/metrics-server/ - name: jetstack - url: https://charts.jetstack.io - - name: istio - url: https://istio-release.storage.googleapis.com/charts - - name: bitnami-oci - url: oci://registry-1.docker.io/bitnamicharts - - name: badhouseplants-test - url: oci://git.badhouseplants.net/allanger/test - - name: badhouseplants - url: https://badhouseplants.github.io/helm-charts/ + helm: + url: https://charts.jetstack.io -mirrors: - - name: badhouseplants-test - oci: - url: oci://git.badhouseplants.net - prefix: allanger/test - -charts: - - name: vaultwarden - chart: vaultwarden - repository: badhouseplants - version: 1.0.0 - mirrors: - - badhouseplants-test - extensions: - - ./examples/one-config/extensions/vaultwarden/ - patches: - - ./examples/one-config/patches/vaultwarden - - - name: metrics-server - chart: metrics-server - repository: metrics-server - version: 3.11.0 - mirrors: - - badhouseplants-test - - name: istio-base - chart: base - repository: istio +releases: + - name: cert-manager + release: cert-manager + repository: jetstack version: latest - mirrors: - - badhouseplants-test - - name: istio-gateway - chart: gateway - repository: istio - version: 1.19.2 - mirrors: - - badhouseplants-test - - name: istiod - chart: istiod - repository: istio - version: 1.19.2 - mirrors: - - badhouseplants-test - - name: postgresql - chart: postgresql - repository: bitnami-oci - version: latest - mirrors: - - badhouseplants-test -releases: - - name: metrics-server - repository: metrics-server - mirror: badhouseplants-test - chart: metrics-server - version: 3.11.0 - installed: true - namespace: kube-system - createNamespace: false - - - name: istio-base - repository: istio - mirror: badhouseplants-test - chart: istio-base - installed: true - namespace: istio-system - createNamespace: false - version: 1.19.2 - - - name: istio-ingressgateway - repository: istio - mirror: badhouseplants-test - chart: istio-gateway - version: 1.19.2 - installed: true - namespace: istio-system - createNamespace: false - - - name: istiod - repository: istio - mirror: badhouseplants-test - version: latest - chart: istiod - installed: true - namespace: istio-system - createNamespace: false - - - name: postgresql-server - chart: postgresql - repository: bitnami-oci - mirror: badhouseplants-test - namespace: postgresql-server - version: latest - values: - - ./examples/one-config/values/postgresql.yaml - secrets: - - ./examples/one-config/secrets/postgresql.yaml - -clusters: +environments: - name: cluster-shoebill-test git: git@git.badhouseplants.net:allanger/shoebill-test.git dotsops: | @@ -122,8 +22,4 @@ clusters: - age16svfskd8x75g62f5uwpmgqzth52rr3wgv9m6rxchqv6v6kzmzf0qvhr2pk provider: flux releases: - - metrics-server - - istio-base - - istio-ingressgateway - - istiod - - postgresql-server + - name: vaultwarden