Skip to content

Commit 0478908

Browse files
authored
Merge pull request #34 from deggja/chore/structure
chore: structure project
2 parents 6d75326 + 88900cc commit 0478908

File tree

5 files changed

+35
-44
lines changed

5 files changed

+35
-44
lines changed

.goreleaser.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ changelog:
2727

2828
builds:
2929
- id: "chaossnake"
30-
main: main.go
30+
main: ./cmd/main.go
3131
dir: ./backend
3232
binary: chaossnake
3333
goos:

backend/main.go renamed to backend/cmd/main.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"time"
1010

1111
tl "github.com/JoelOtter/termloop"
12+
"github.com/deggja/chaossnake/pkg/k8s"
1213
)
1314

1415
type Coordinates struct {
@@ -31,7 +32,7 @@ var foodPodMappings []FoodPodMapping
3132

3233
type FoodPodMapping struct {
3334
foodEntity *Food
34-
resourceInfo ResourceInfo
35+
resourceInfo k8s.ResourceInfo
3536
}
3637

3738
const (
@@ -66,7 +67,7 @@ func (f *Food) PlaceFood(levelWidth, levelHeight int) {
6667

6768
// Get a random resource name and namespace to associate with this food
6869
select {
69-
case resourceInfo := <-resourceInfoQueue:
70+
case resourceInfo := <-k8s.ResourceInfoQueue:
7071
foodPodMappings = append(foodPodMappings, FoodPodMapping{
7172
foodEntity: f,
7273
resourceInfo: resourceInfo,
@@ -251,7 +252,7 @@ func (snake *Snake) Tick(event tl.Event) {
251252
// Handle resource deletion linked to food
252253
for index, mapping := range foodPodMappings {
253254
if mapping.foodEntity == food {
254-
go deleteResource(mapping.resourceInfo)
255+
go k8s.DeleteResource(mapping.resourceInfo)
255256
deletionMessage := fmt.Sprintf("Oh no! Seems like you ate %s: %s in namespace %s", mapping.resourceInfo.Type, mapping.resourceInfo.Name, mapping.resourceInfo.Namespace)
256257
deletedPodText.SetText(deletionMessage)
257258
log.Println(deletionMessage)
@@ -287,21 +288,21 @@ func main() {
287288
configFilePath := flag.String("config", "", "Path to configuration file")
288289
flag.Parse()
289290

290-
setDefaultConfig()
291+
k8s.SetDefaultConfig()
291292

292293
// Load configuration from the specified file if provided
293294
if *configFilePath != "" {
294-
err := loadConfigFromFile(*configFilePath)
295+
err := k8s.LoadConfigFromFile(*configFilePath)
295296
if err != nil {
296297
log.Fatalf("Failed to load config file: %s", err)
297298
}
298299
}
299300

300301
// init k8s client
301-
initKubeClient()
302+
k8s.InitKubeClient()
302303

303304
// Start fetching resources to avoid lag during gameplay
304-
go fetchResources()
305+
go k8s.FetchResources()
305306

306307
logFile, err := os.OpenFile("chaos.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
307308
if err != nil {
@@ -329,7 +330,7 @@ func main() {
329330
food.SetPosition(foodX, foodY)
330331

331332
select {
332-
case resourceInfo := <-resourceInfoQueue:
333+
case resourceInfo := <-k8s.ResourceInfoQueue:
333334
foodPodMappings = append(foodPodMappings, FoodPodMapping{
334335
foodEntity: food,
335336
resourceInfo: resourceInfo,

backend/go.mod

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
module github.com/deggja/serpent
1+
module github.com/deggja/chaossnake
22

3-
go 1.23.0
4-
5-
toolchain go1.23.5
3+
go 1.23.3
64

75
require (
6+
github.com/JoelOtter/termloop v0.0.0-20210806173944-5f7c38744afb
87
k8s.io/api v0.32.1
98
k8s.io/apimachinery v0.32.1
109
k8s.io/client-go v0.32.1
@@ -27,15 +26,19 @@ require (
2726
github.com/josharian/intern v1.0.0 // indirect
2827
github.com/json-iterator/go v1.1.12 // indirect
2928
github.com/mailru/easyjson v0.7.7 // indirect
29+
github.com/mattn/go-runewidth v0.0.9 // indirect
3030
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
3131
github.com/modern-go/reflect2 v1.0.2 // indirect
3232
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
3333
github.com/nsf/termbox-go v1.1.1 // indirect
3434
github.com/pkg/errors v0.9.1 // indirect
3535
github.com/spf13/pflag v1.0.5 // indirect
3636
github.com/x448/float16 v0.8.4 // indirect
37-
golang.org/x/net v0.33.0 // indirect
37+
golang.org/x/net v0.30.0 // indirect
3838
golang.org/x/oauth2 v0.23.0 // indirect
39+
golang.org/x/sys v0.26.0 // indirect
40+
golang.org/x/term v0.25.0 // indirect
41+
golang.org/x/text v0.19.0 // indirect
3942
golang.org/x/time v0.7.0 // indirect
4043
google.golang.org/protobuf v1.35.1 // indirect
4144
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
@@ -48,12 +51,3 @@ require (
4851
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
4952
sigs.k8s.io/yaml v1.4.0 // indirect
5053
)
51-
52-
require (
53-
github.com/JoelOtter/termloop v0.0.0-20210806173944-5f7c38744afb
54-
github.com/mattn/go-runewidth v0.0.16 // indirect
55-
github.com/rivo/uniseg v0.4.7 // indirect
56-
golang.org/x/sys v0.28.0 // indirect
57-
golang.org/x/term v0.27.0 // indirect
58-
golang.org/x/text v0.21.0 // indirect
59-
)

backend/go.sum

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
5252
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
5353
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
5454
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
55+
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
5556
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
56-
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
57-
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
5857
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
5958
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
6059
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -73,9 +72,6 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
7372
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
7473
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
7574
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
76-
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
77-
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
78-
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
7975
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
8076
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
8177
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
@@ -102,8 +98,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
10298
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
10399
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
104100
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
105-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
106-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
101+
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
102+
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
107103
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
108104
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
109105
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -112,14 +108,14 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
112108
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
113109
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
114110
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
115-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
116-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
117-
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
118-
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
111+
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
112+
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
113+
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
114+
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
119115
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
120116
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
121-
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
122-
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
117+
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
118+
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
123119
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
124120
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
125121
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

backend/kubernetes.go renamed to backend/pkg/k8s/kubernetes.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package main
1+
package k8s
22

33
import (
44
"context"
@@ -18,15 +18,15 @@ import (
1818
"k8s.io/client-go/util/homedir"
1919
)
2020

21-
var resourceInfoQueue = make(chan ResourceInfo, 100)
21+
var ResourceInfoQueue = make(chan ResourceInfo, 100)
2222

23-
func fetchResources() {
23+
func FetchResources() {
2424
for {
2525
resourceInfo, err := getRandomResourceInfo()
2626
if err != nil {
2727
log.Printf("Error fetching resource info: %s\n", err)
2828
} else {
29-
resourceInfoQueue <- resourceInfo
29+
ResourceInfoQueue <- resourceInfo
3030
}
3131
time.Sleep(1 * time.Second)
3232
}
@@ -298,11 +298,11 @@ var defaultConfig = Config{
298298

299299
var gameConfig Config
300300

301-
func setDefaultConfig() {
301+
func SetDefaultConfig() {
302302
gameConfig = defaultConfig
303303
}
304304

305-
func loadConfigFromFile(filename string) error {
305+
func LoadConfigFromFile(filename string) error {
306306
data, err := os.ReadFile(filename)
307307
if err != nil {
308308
return err
@@ -376,7 +376,7 @@ type PodInfo struct {
376376

377377
var clientset *kubernetes.Clientset
378378

379-
func initKubeClient() {
379+
func InitKubeClient() {
380380
var kubeconfig string
381381
if kc := os.Getenv("KUBECONFIG"); kc != "" {
382382
kubeconfig = kc
@@ -444,7 +444,7 @@ func isCriticalPod(pod v1.Pod) bool {
444444
return isCritical
445445
}
446446

447-
func deleteResource(resourceInfo ResourceInfo) {
447+
func DeleteResource(resourceInfo ResourceInfo) {
448448
var err error
449449
switch resourceInfo.Type {
450450
case "pod":

0 commit comments

Comments
 (0)