-
Notifications
You must be signed in to change notification settings - Fork 0
/
common.go
55 lines (47 loc) · 1.08 KB
/
common.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
package main
import (
"bufio"
"fmt"
"log"
"os"
"path/filepath"
"strconv"
"strings"
)
const ApiError = "Error making API call"
func onError(err error, message string) {
if nil != err {
if "" == message {
message = ApiError
}
log.Fatalf(message+": %v", err.Error())
}
}
func configDir() string {
userConfigDir, err := os.UserConfigDir()
onError(err, "Could not get user config dir")
configDir := filepath.Join(userConfigDir, "youtube_manager")
onError(os.MkdirAll(configDir, 0700), "Could not create config dir at "+configDir)
return configDir
}
func fclose(file *os.File) {
_ = file.Close()
}
func input(reader *bufio.Reader, prompt string) string {
fmt.Printf("%s: ", prompt)
r, err := reader.ReadString('\n')
onError(err, "Could not process user input")
return strings.TrimSpace(r)
}
func quittingInput(reader *bufio.Reader, prompt string) string {
r := input(reader, fmt.Sprintf("%s ([iq]uit to exit)", prompt))
if "iquit" == r || "iq" == r {
os.Exit(0)
}
return r
}
func atoi(s string) int {
i, err := strconv.Atoi(s)
onError(err, "Atoi failed")
return i
}