-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.go
81 lines (66 loc) · 1.69 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
package main
import (
"fmt"
"log"
"os"
"os/signal"
"syscall"
"github.com/yakabuff/discord-dl/archiver"
"github.com/yakabuff/discord-dl/db"
"github.com/yakabuff/discord-dl/job"
"github.com/yakabuff/discord-dl/models"
)
func main() {
jobArgs, args := archiver.InitCli()
//Parse config file if specified
if args.Input != "" {
err := archiver.ParseConfigFile(args.Input, &args)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(1)
}
}
if !archiver.ValidFlags(jobArgs, args) {
fmt.Fprintln(os.Stderr, "Invalid flags")
os.Exit(1)
}
var theArchiver = archiver.Archiver{Args: args}
theArchiver.InitLogger()
if args.Output != "" {
db, err := db.Init_db(theArchiver.Args.Output)
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(1)
}
theArchiver.Db = *db
}
if args.Token != "" {
errDg, dg := theArchiver.CreateConnection()
if errDg != nil {
// log.Println(theArchiver.Args.Token)
fmt.Fprintln(os.Stderr, errDg.Error())
os.Exit(1)
}
theArchiver.Dg = dg
theArchiver.InitListener()
}
err := theArchiver.InitWeb()
if err != nil {
fmt.Fprintln(os.Stderr, err.Error())
os.Exit(1)
}
theArchiver.Queue = job.NewJobQueue(&theArchiver, theArchiver.Args.Logging)
if jobArgs.Mode != models.NONE {
//Wait until job is complete and then exit
theArchiver.Queue.Enqueue(job.NewJob(jobArgs))
theArchiver.Queue.Wg.Wait()
theArchiver.Queue.Progress.Wait()
log.Println("Job has finished")
} else {
//If no job, run forever and wait for jobs
fmt.Println("discord-dl is now running. Press CTRL-C to exit.")
sc := make(chan os.Signal, 1)
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
<-sc
}
}