diff options
-rw-r--r-- | main.go | 2 | ||||
-rw-r--r-- | src/atexit/atexit.go | 13 | ||||
-rw-r--r-- | src/dbx/db.go | 4 | ||||
-rw-r--r-- | src/try/try.go | 7 |
4 files changed, 24 insertions, 2 deletions
@@ -11,6 +11,7 @@ import ( "git.thomasvoss.com/euro-cash.eu/src" "git.thomasvoss.com/euro-cash.eu/src/dbx" + "git.thomasvoss.com/euro-cash.eu/src/atexit" "git.thomasvoss.com/euro-cash.eu/src/email" . "git.thomasvoss.com/euro-cash.eu/src/try" "git.thomasvoss.com/euro-cash.eu/src/watch" @@ -40,6 +41,7 @@ func main() { if *debugp { path := Try2(os.Executable()) go watch.File(path, func() { + atexit.Exec() Try(syscall.Exec(path, os.Args, os.Environ())) }) } 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() } } |