-
Notifications
You must be signed in to change notification settings - Fork 0
/
prefs.go
56 lines (50 loc) · 1.35 KB
/
prefs.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
package main
import (
"os"
"encoding/json"
"errors"
"fmt"
"path"
"strings"
"path/filepath"
"github.com/rs/zerolog"
)
type prefType struct {
DestDir, CollectionMedia string
MaxTitles, ResXMax, ResYMax int
KeepListEntire,CommentsToCutpattern bool
// MustMoveTxtAddendumToSrc bool
Fn []string
FnScope []int
InFile,Title,Caption string
ObjectsRegister map[string][]string
}
var pref prefType
func init() {
logger := zerolog.New(zerolog.ConsoleWriter{Out: os.Stderr}).With().Timestamp().Logger()
e, err := os.Executable()
if err != nil {
logger.Fatal().Msg(fmt.Sprint(err))
} else {
CurrentDir = path.Dir(e)
}
data, err := os.ReadFile(CurrentDir + "/config.json")
if err != nil {
logger.Info().Msg(fmt.Sprint(err))
}
if errjs := json.Unmarshal([]byte(data), &pref); errjs != nil && !errors.Is(err, os.ErrNotExist){
check(err)
}
if pref.DestDir == "" && filepath.IsAbs(CurrentDir) {
pref.DestDir = CurrentDir
}
if pref.CollectionMedia == "" {
logger.Fatal().Msg("Images can't be imported because the path to collection has not been provided. Aborting...")
}
pref.DestDir = safe(pref.DestDir)
pref.CollectionMedia = safe(pref.CollectionMedia)
}
// whether path of dir is given with a final "/" should be irrelevant
func safe(path string) string {
return strings.TrimSuffix(path, string(os.PathSeparator)) + string(os.PathSeparator)
}