-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathmain.go
75 lines (59 loc) · 1.34 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
package main
import (
"bufio"
"flag"
"os"
"regexp"
"runtime"
log "github.com/Crosse/gosimplelogger"
)
func main() {
var (
fonts []string
filename = flag.String("fromFile", "", "text file containing fonts to install")
debug = flag.Bool("debug", false, "Enable debug logging")
dryrun = flag.Bool("dry-run", false, "Don't actually download or install anything")
)
flag.Parse()
if *filename == "" && len(flag.Args()) == 0 {
flag.Usage()
os.Exit(1)
}
if *debug {
log.LogLevel = log.LogDebug
} else {
log.LogLevel = log.LogInfo
}
if *filename != "" {
fd, err := os.Open(*filename)
if err != nil {
log.Fatal(err)
}
re := regexp.MustCompile(`^(#.*|\s*)?$`)
scanner := bufio.NewScanner(fd)
for scanner.Scan() {
line := scanner.Text()
if !re.MatchString(line) {
fonts = append(fonts, line)
}
}
if err = scanner.Err(); err != nil {
log.Fatal(err)
}
}
fonts = append(fonts, flag.Args()...)
for _, v := range fonts {
if *dryrun {
log.Infof("Would install font(s) from %v", v)
continue
}
log.Debugf("Installing font from %v", v)
if err := InstallFont(v); err != nil {
log.Error(err)
}
}
log.Infof("Installed %v fonts", installedFonts)
if runtime.GOOS == "windows" {
log.Info("You will need to logoff and logon before the installed font(s) will be available.")
}
}