-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
main.go
130 lines (113 loc) · 3.08 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package main
import (
"embed"
"fmt"
"log/slog"
"os"
"runtime"
"strconv"
"strings"
"github.com/marcus-crane/october/backend"
"github.com/marcus-crane/october/cli"
"github.com/wailsapp/wails/v2"
wlogger "github.com/wailsapp/wails/v2/pkg/logger"
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
"github.com/wailsapp/wails/v2/pkg/options/linux"
"github.com/wailsapp/wails/v2/pkg/options/mac"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
//go:embed all:frontend/dist
var assets embed.FS
//go:embed build/appicon.png
var icon []byte
var version = "DEV"
var loglevel = slog.LevelDebug
// Builds with this set to true cause files to be created
// in the same directory as the running executable
var portablebuild = "false"
func main() {
isPortable := false
isPortable, _ = strconv.ParseBool(portablebuild)
logger, err := backend.StartLogger(isPortable, loglevel)
if err != nil {
panic("Failed to set up logger")
}
usr_cache_dir, _ := os.UserCacheDir()
usr_config_dir, _ := os.UserConfigDir()
logger.Info("Initialising October",
slog.String("version", version),
slog.String("loglevel", loglevel.String()),
slog.Bool("portable", isPortable),
slog.String("user_cache_dir", usr_cache_dir),
slog.String("user_config_dir", usr_config_dir),
slog.String("goarch", runtime.GOARCH),
slog.String("goos", runtime.GOOS),
slog.String("goversion", runtime.Version()),
)
if cli.IsCLIInvokedExplicitly(os.Args) {
logger.Info("CLI command invoked",
slog.String("args", strings.Join(os.Args, " ")),
)
cli.Invoke(isPortable, version, logger)
return
}
// Create an instance of the app structure
app := NewApp(isPortable, logger)
backend, err := backend.StartBackend(&app.ctx, version, isPortable, logger)
if err != nil {
logger.Error("Backend failed to start up",
slog.String("error", err.Error()),
)
panic("Failed to start backend")
}
// Create application with options
err = wails.Run(&options.App{
Title: "October",
Width: 1366,
Height: 768,
AssetServer: &assetserver.Options{
Assets: assets,
},
LogLevel: wlogger.DEBUG,
LogLevelProduction: wlogger.DEBUG,
OnStartup: app.startup,
OnDomReady: app.domReady,
OnShutdown: app.shutdown,
Bind: []interface{}{
app,
backend,
backend.Bookmark,
backend.Content,
backend.Kobo,
backend.Readwise,
backend.Settings,
},
// Windows platform specific options
Windows: &windows.Options{
WebviewIsTransparent: false,
WindowIsTranslucent: false,
DisableWindowIcon: false,
},
Mac: &mac.Options{
TitleBar: mac.TitleBarDefault(),
WebviewIsTransparent: true,
WindowIsTranslucent: true,
About: &mac.AboutInfo{
Title: "October",
Message: fmt.Sprintf("%s\nA small Wails application for retrieving Kobo highlights", version),
Icon: icon,
},
},
Linux: &linux.Options{
Icon: icon,
WindowIsTranslucent: false,
},
})
if err != nil {
logger.Error("Wails runtime exited",
slog.String("error", err.Error()),
)
}
// TODO: Close file
}