Skip to content

Commit 8dac3c8

Browse files
authored
feat: basic self cleanup addition (#30)
1 parent 798673b commit 8dac3c8

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

build/build.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func environ() (env []string) {
5858
}
5959

6060
func (bin *Binary) WriteBuild(writer io.Writer) error {
61-
dir, err := tempDirectory()
61+
dir, err := GetTempDirectory()
6262
if err != nil && !os.IsNotExist(err) {
6363
return fmt.Errorf("creating temporary directory: %w", err)
6464
}
@@ -274,7 +274,7 @@ func tempFilename() (string, error) {
274274
return f, nil
275275
}
276276

277-
func tempDirectory() (string, error) {
277+
func GetTempDirectory() (string, error) {
278278
dir, err := os.MkdirTemp(os.TempDir(), "goblin")
279279
if err != nil {
280280
return "", err

cmd/goblin-api/main.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"log"
1212
"net/http"
1313
"os"
14+
"os/exec"
1415
"path/filepath"
1516
"strings"
1617
"time"
@@ -135,6 +136,7 @@ func main() {
135136
}
136137
}
137138

139+
clearTempCaches()
138140
clearStorageBackgroundJob()
139141
StartServer(portFlag)
140142
}
@@ -400,3 +402,50 @@ func constructArtifactName(bin *build.Binary) string {
400402
artifactName.Write([]byte(bin.Arch))
401403
return artifactName.String()
402404
}
405+
406+
func CleanupGoCache() {
407+
log.Println("Cleaning up go caches")
408+
cmd := exec.Command("go", "clean", "-cache")
409+
err := cmd.Run()
410+
if err != nil {
411+
log.Printf("Failed to run go clean -cache with error: %v", err)
412+
}
413+
414+
cmd = exec.Command("go", "clean", "-modcache")
415+
err = cmd.Run()
416+
if err != nil {
417+
log.Printf("Failed to run go clean -modcache with error: %v", err)
418+
}
419+
}
420+
421+
func CleanupFailedBuildCaches() {
422+
log.Println("Cleaning up fail build directories")
423+
base := os.TempDir()
424+
entries, err := os.ReadDir(base)
425+
if err != nil {
426+
log.Println("failed to read temp directory")
427+
return
428+
}
429+
for _, ent := range entries {
430+
if ent.IsDir() {
431+
if strings.HasPrefix(ent.Name(), "goblin") {
432+
err := os.RemoveAll(ent.Name())
433+
if err != nil {
434+
log.Printf("failed to remove dir: %v", err)
435+
}
436+
}
437+
}
438+
}
439+
}
440+
441+
func clearTempCaches() {
442+
tickerDur, _ := time.ParseDuration("30s")
443+
ticker := time.NewTicker(tickerDur)
444+
445+
go func() {
446+
for range ticker.C {
447+
CleanupFailedBuildCaches()
448+
CleanupGoCache()
449+
}
450+
}()
451+
}

0 commit comments

Comments
 (0)