package main import "core:fmt" import "core:mem" import "core:os" import "core:path/filepath" import "../core" run_app :: proc() -> bool { db_path, err := core.storage_look_up_db_path() if err != nil { fmt.eprintf("run_app: os.make_directory error -> %v\n", os.error_string(err)) return false } fmt.printf("%s🧌 data goblin sync%s", core.BOLD, core.RESET) fmt.printf( " %s·%s %s%s%s %s@ %s%s\n", core.DIM, core.RESET, core.GREEN, filepath.base(db_path), core.RESET, core.DIM, filepath.dir(db_path), core.RESET, ) store: core.Storage if err := core.storage_open(&store, db_path); err != nil { fmt.eprintf("run_app: storage.open error -> %v\n", err) return false } if err := core.storage_ensure_schema(store); err != nil { fmt.eprintf("run_app: storage.ensure_schema error -> %v\n", err) return false } if err := core.storage_close(&store); err != nil { fmt.eprintf("run_app: storage.close error -> %v\n", err) return false } return true } main :: proc() { when ODIN_DEBUG { track: mem.Tracking_Allocator mem.tracking_allocator_init(&track, context.allocator) context.allocator = mem.tracking_allocator(&track) defer { for _, leak in track.allocation_map { fmt.printf("%v leaked %m\n", leak.location, leak.size) } mem.tracking_allocator_destroy(&track) } } if !run_app() { fmt.printf("🧌 the goblin is confused. · %sexit 1%s\n", core.RED, core.RESET) os.exit(-1) } fmt.printf("🧌 the goblin returns to the hoard.\n") free_all(context.temp_allocator) }