summaryrefslogtreecommitdiff
path: root/pkg/config/deprecated.go
blob: c002085fc0f0e4770f82121674c151a7593a615e (plain)
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
package config

import (
	"fmt"

	"github.com/Necoro/feed2imap-go/pkg/log"
)

type deprecated struct {
	msg    string
	handle func(interface{}, *GlobalOptions, *Options)
}

var unsupported = deprecated{
	"It won't be supported and is ignored!",
	nil,
}

var deprecatedOpts = map[string]deprecated{
	"dumpdir":       unsupported,
	"debug-updated": {"Use '-d' as option instead.", nil},
	"execurl":       unsupported,
	"filter":        unsupported,
	"disable-ssl-verification": {"Interpreted as 'tls-no-verify'.", func(i interface{}, global *GlobalOptions, opts *Options) {
		val, ok := i.(bool)
		if ok {
			if val && !opts.NoTLS {
				// do not overwrite the set NoTLS flag!
				opts.NoTLS = val
			}
		} else {
			log.Errorf("disable-ssl-verification: value '%v' cannot be interpreted as a boolean. Ignoring!", i)
		}
	}},
}

func handleDeprecated(option string, value interface{}, feed string, global *GlobalOptions, opts *Options) bool {
	dep, ok := deprecatedOpts[option]
	if !ok {
		return false
	}

	var prefix string
	if feed != "" {
		prefix = fmt.Sprintf("Feed '%s': ", feed)
	} else {
		prefix = "Global "
	}

	log.Warnf("%sOption '%s' is deprecated: %s", prefix, option, dep.msg)

	if dep.handle != nil {
		dep.handle(value, global, opts)
	}

	return true
}