/
build.go
79 lines (69 loc) · 2.63 KB
/
build.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
package main
import (
"go/build"
"os"
"os/exec"
"path/filepath"
"runtime"
)
func runCmd(command string, args ...string) {
cmd := exec.Command(command, args...)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
println(cmd.String())
if err := cmd.Run(); err != nil {
panic(err)
}
}
func runCmdAt(basePath string, command string, args ...string) {
cmd := exec.Command(command, args...)
cmd.Dir = basePath
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
println(cmd.String())
if err := cmd.Run(); err != nil {
panic(err)
}
}
func main() {
//set up paths
fyneFile := filepath.Join(build.Default.GOPATH, "bin", "fyne")
resourcePath := filepath.Join("source", "core", "resource")
iconFile := filepath.Join(resourcePath, "Icon.go")
fontFile := filepath.Join(resourcePath, "Font.go")
bundleResource := func(outputFile, name, sourceFile string) {
runCmd(fyneFile, "bundle", "-o", outputFile, "--package", "resource", "--name", name, sourceFile)
}
appendResource := func(outputFile, name, sourceFile string) {
runCmd(fyneFile, "bundle", "-o", outputFile, "--append", "--name", name, sourceFile)
}
//bundle the resources
bundleResource(iconFile, "MissingIcon", filepath.Join("asset", "missing_asset.png"))
appendResource(iconFile, "WindowIcon", filepath.Join("asset", "icon.ico"))
appendResource(iconFile, "AlbumTabIcon", filepath.Join("asset", "album_tab.png"))
appendResource(iconFile, "MusicTabIcon", filepath.Join("asset", "music_tab.png"))
appendResource(iconFile, "MusicAdderOnlineIcon", filepath.Join("asset", "music_adder_online.png"))
appendResource(iconFile, "DefaultIcon", filepath.Join("asset", "default.png"))
appendResource(iconFile, "RandomIcon", filepath.Join("asset", "random.png"))
appendResource(iconFile, "YouTubeIcon", filepath.Join("asset", "youtube.png"))
appendResource(iconFile, "BiliBiliIcon", filepath.Join("asset", "bilibili.png"))
bundleResource(fontFile, "RegularFont", filepath.Join("asset", "regular_font.ttf"))
appendResource(fontFile, "BoldFont", filepath.Join("asset", "bold_font.ttf"))
appendResource(fontFile, "ItalicFont", filepath.Join("asset", "italic_font.ttf"))
appendResource(fontFile, "BoldItalicFont", filepath.Join("asset", "bold_italic_font.ttf"))
// build binary
platform := runtime.GOOS
if len(os.Args) >= 2 {
platform = os.Args[1]
}
switch platform {
case "windows":
runCmdAt("source", "go", "build", "-ldflags", "-H=windowsgui", "-o", filepath.Join("..", "meowyplayer.exe"), "main.go")
case "linux", "darwin":
runCmdAt("source", "go", "build", "-o", filepath.Join("..", "meowyplayer"), "main.go")
default:
panic("unknown platform")
}
}