-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
82 lines (70 loc) · 1.32 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
package main
import (
"flag"
"fmt"
"log"
"os"
"os/signal"
"strconv"
"syscall"
)
var (
course string
email string
password string
start int
)
func init() {
flag.StringVar(&course, "n", "", "coursename to download")
flag.StringVar(&email, "e", "", "coursehunter.net login email")
flag.StringVar(&password, "p", "", "coursehunter.net login password")
flag.Parse()
}
func main() {
var (
h *hunter
err error
)
notify := make(chan os.Signal, 1)
signal.Notify(notify, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
args := flag.Args()
if len(args) == 0 {
h, err = newHunter(course, email, password)
if err != nil {
log.Fatalf("Error: %v", err)
}
mkdirCourse(course)
h.download(notify)
} else if len(args) >= 2 && args[0] == "resume" {
start, err := strconv.Atoi(args[1])
if err != nil {
start = 1
}
getStates().resume(start, notify)
} else {
printUsage()
os.Exit(1)
}
}
func mkdirCourse(course string) {
if _, err := os.Stat(course); os.IsNotExist(err) {
err := os.Mkdir(course, 0755)
if err != nil {
log.Fatalln(err)
}
}
}
func printUsage() {
helpstr := `
[INFO]: coursehunter
[USAGE]: coursehunter [command] [options...]
COMMAND:
resume resume interrupted downloads
OPTIONS:
-n coursename
-e email
-p password
- start
`
fmt.Println(helpstr)
}