43 lines
1.3 KiB
Odin
43 lines
1.3 KiB
Odin
package main
|
|
|
|
import "core:fmt"
|
|
import "core:os"
|
|
import "core:strings"
|
|
import json "core:encoding/json"
|
|
|
|
Editor_Settings :: struct {
|
|
font_path: string,
|
|
}
|
|
|
|
editor_settings_load :: proc() -> Editor_Settings {
|
|
settings := Editor_Settings{}
|
|
path, ok := editor_settings_path(context.temp_allocator)
|
|
if !ok do return settings
|
|
|
|
data, err := os.read_entire_file(path, context.allocator)
|
|
if err != nil do return settings
|
|
defer delete(data)
|
|
|
|
value, parse_err := json.parse_string(string(data), .JSON, true)
|
|
if parse_err != nil do return settings
|
|
defer json.destroy_value(value)
|
|
|
|
font_path, has_font_path := json_get_string(value, "fontPath")
|
|
if has_font_path && len(strings.trim_space(font_path)) > 0 {
|
|
settings.font_path = strings.clone(strings.trim_space(font_path))
|
|
}
|
|
return settings
|
|
}
|
|
|
|
editor_settings_destroy :: proc(settings: ^Editor_Settings) {
|
|
delete(settings.font_path)
|
|
}
|
|
|
|
editor_settings_path :: proc(allocator := context.allocator) -> (string, bool) {
|
|
if env := os.get_env("NATIVE_EDITOR_SETTINGS", allocator); len(env) > 0 {
|
|
return env, true
|
|
}
|
|
home := os.get_env("HOME", allocator)
|
|
if len(home) == 0 do return "", false
|
|
return fmt.aprintf("%s/.config/native-kotlin-editor/settings.json", home), true
|
|
}
|