diff options
| author | Thomas Voss <mail@thomasvoss.com> | 2025-06-14 00:41:27 +0200 | 
|---|---|---|
| committer | Thomas Voss <mail@thomasvoss.com> | 2025-06-14 00:41:27 +0200 | 
| commit | 4f14515613bd491dd0627398aa8fc3e3aef07945 (patch) | |
| tree | 61d7ad4890707b280c15118c47281a02dc5000f7 /src | |
| parent | 604cac8c0ab26a43d28341ff6f6e58e969eec925 (diff) | |
Implement the ‘atexit’ package
Diffstat (limited to 'src')
| -rw-r--r-- | src/atexit/atexit.go | 13 | ||||
| -rw-r--r-- | src/dbx/db.go | 4 | ||||
| -rw-r--r-- | src/try/try.go | 7 | 
3 files changed, 22 insertions, 2 deletions
diff --git a/src/atexit/atexit.go b/src/atexit/atexit.go new file mode 100644 index 0000000..ed35ccf --- /dev/null +++ b/src/atexit/atexit.go @@ -0,0 +1,13 @@ +package atexit + +var hooks = []func(){} + +func Register(f func()) { +	hooks = append(hooks, f) +} + +func Exec() { +	for i := len(hooks)-1; i >= 0; i-- { +		hooks[i]() +	} +} diff --git a/src/dbx/db.go b/src/dbx/db.go index 5bd65a5..e97b9ea 100644 --- a/src/dbx/db.go +++ b/src/dbx/db.go @@ -11,6 +11,7 @@ import (  	"github.com/mattn/go-sqlite3" +	"git.thomasvoss.com/euro-cash.eu/src/atexit"  	. "git.thomasvoss.com/euro-cash.eu/src/try"  ) @@ -22,6 +23,7 @@ var (  func Init(sqlDir fs.FS) {  	db = Try2(sql.Open("sqlite3", DBName))  	Try(db.Ping()) +	atexit.Register(Close)  	Try(applyMigrations(sqlDir))  	/* TODO: Remove debug code */ @@ -120,7 +122,7 @@ func applyMigrations(dir fs.FS) error {  		if err := tx.Commit(); err != nil {  			return err  		} -		log.Printf("Applied database migration ‘%s’", f) +		log.Printf("Applied database migration ‘%s’\n", f)  	}  	if last != "" { diff --git a/src/try/try.go b/src/try/try.go index fc086d1..24cb95c 100644 --- a/src/try/try.go +++ b/src/try/try.go @@ -1,10 +1,15 @@  package try -import "log" +import ( +	"log" + +	"git.thomasvoss.com/euro-cash.eu/src/atexit" +)  func Try(e error) {  	if e != nil {  		log.Fatal(e) +		atexit.Exec()  	}  }  |