package main import ( "embed" "flag" "fmt" "io" "log" "os" _ "embed" "github.com/wailsapp/wails/v2" "github.com/wailsapp/wails/v2/pkg/options" "github.com/wailsapp/wails/v2/pkg/options/assetserver" ) //go:embed all:frontend/dist var assets embed.FS var Error *log.Logger func init() { log.SetFlags(log.Lmicroseconds | log.Lshortfile) logFile, err := os.Create("main.log") if err != nil { log.Printf("Error creating log file: %v", err) os.Exit(1) } logger := io.MultiWriter(os.Stdout, logFile) log.SetOutput(logger) Error = log.New(io.MultiWriter(logFile, os.Stderr, os.Stdout), fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"), log.Lmicroseconds|log.Lshortfile) } var ( settingsService *SettingsService foodService *FoodService weightService *WeightService ) //go:embed food.ddl var foodDDL string // TODO: Embed food.ddl and create DB if no exists // TODO: Add averages to graphs (ie. R2) https://stackoverflow.com/questions/60622195/how-to-draw-a-linear-regression-line-in-chart-js func main() { dbpath := flag.String("db", "food.db", "Path to the database file") flag.Parse() db := DB{path: *dbpath} err := db.Open() if err != nil { Error.Printf("%++v", err) os.Exit(1) } defer db.Close() err = db.Init(foodDDL) if err != nil { Error.Printf("Error initializing database: %++v", err) os.Exit(1) } settingsService = &SettingsService{db: &db} err = settingsService.LoadSettings() if err != nil { Error.Printf("%++v", err) os.Exit(1) } log.Printf("Loaded settings as: %++v", Settings) foodService = &FoodService{db: &db} weightService = &WeightService{db: &db} // Create an instance of the app structure app := NewApp() // Create application with options err = wails.Run(&options.App{ Title: "calorie-counter", Width: 1920, Height: 1080, AssetServer: &assetserver.Options{ Assets: assets, }, BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, OnStartup: app.startup, Bind: []interface{}{ app, }, }) if err != nil { println("Error:", err.Error()) } }