aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-26 17:52:55 +0200
committerRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-26 17:52:55 +0200
commit63d20f3f7b02f33475049c12e03569a4f67fe810 (patch)
tree42cf1c8bd5d839a410c106c8a1d86b4d4180db37
parent9e69c102b596924d589693ce537c4fecae3aa44c (diff)
downloadfeed2imap-go-63d20f3f7b02f33475049c12e03569a4f67fe810.tar.gz
feed2imap-go-63d20f3f7b02f33475049c12e03569a4f67fe810.tar.bz2
feed2imap-go-63d20f3f7b02f33475049c12e03569a4f67fe810.zip
Options: "disable" and "ignore-hash"
-rw-r--r--internal/feed/cache.go2
-rw-r--r--internal/feed/cache_v1.go6
-rw-r--r--internal/feed/state.go4
-rw-r--r--pkg/config/config.go10
4 files changed, 16 insertions, 6 deletions
diff --git a/internal/feed/cache.go b/internal/feed/cache.go
index 2a51cb5..b92bfa7 100644
--- a/internal/feed/cache.go
+++ b/internal/feed/cache.go
@@ -27,7 +27,7 @@ type CachedFeed interface {
Checked(withFailure bool)
Failures() uint
Last() time.Time
- filterItems([]feeditem) []feeditem
+ filterItems([]feeditem, bool) []feeditem
Commit()
}
diff --git a/internal/feed/cache_v1.go b/internal/feed/cache_v1.go
index a8e40ed..fb16027 100644
--- a/internal/feed/cache_v1.go
+++ b/internal/feed/cache_v1.go
@@ -171,7 +171,7 @@ func (cf *cachedFeed) deleteItem(index int) {
cf.Items = cf.Items[:len(cf.Items)-1]
}
-func (cf *cachedFeed) filterItems(items []feeditem) []feeditem {
+func (cf *cachedFeed) filterItems(items []feeditem, ignoreHash bool) []feeditem {
if len(items) == 0 {
return items
}
@@ -209,7 +209,7 @@ CACHE_ITEMS:
for idx, oldItem := range cf.Items {
if oldItem.Guid == ci.Guid {
log.Debugf("Guid matches with: %s", oldItem)
- if !oldItem.similarTo(&ci, false) {
+ if !oldItem.similarTo(&ci, ignoreHash) {
item.addReason("guid (upd)")
app(item, ci, &idx)
} else {
@@ -227,7 +227,7 @@ CACHE_ITEMS:
}
for idx, oldItem := range cf.Items {
- if oldItem.similarTo(&ci, false) {
+ if oldItem.similarTo(&ci, ignoreHash) {
log.Debugf("Similarity matches, ignoring: %s", oldItem)
continue CACHE_ITEMS
}
diff --git a/internal/feed/state.go b/internal/feed/state.go
index 6f284ad..ea9239a 100644
--- a/internal/feed/state.go
+++ b/internal/feed/state.go
@@ -72,7 +72,7 @@ func filterFeed(feed *Feed) {
origLen := len(feed.items)
log.Debugf("Filtering %s. Starting with %d items", feed.Name, origLen)
- items := feed.cached.filterItems(feed.items)
+ items := feed.cached.filterItems(feed.items, *feed.Options.IgnHash)
feed.items = items
newLen := len(feed.items)
@@ -112,7 +112,7 @@ func NewState(cfg *config.Config) *State {
func (state *State) RemoveUndue() {
for name, feed := range state.feeds {
- if !feed.NeedsUpdate(feed.cached.Last()) {
+ if *feed.Options.Disable || !feed.NeedsUpdate(feed.cached.Last()) {
delete(state.feeds, name)
}
}
diff --git a/pkg/config/config.go b/pkg/config/config.go
index 1b95f61..b24a9e8 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -37,6 +37,8 @@ var DefaultGlobalOptions = GlobalOptions{
type Options struct {
MinFreq *int `yaml:"min-frequency"`
InclImages *bool `yaml:"include-images"`
+ Disable *bool `yaml:"disable"`
+ IgnHash *bool `yaml:"ignore-hash"`
}
func (opt *Options) mergeFrom(other Options) {
@@ -46,6 +48,12 @@ func (opt *Options) mergeFrom(other Options) {
if opt.InclImages == nil {
opt.InclImages = other.InclImages
}
+ if opt.IgnHash == nil {
+ opt.IgnHash = other.IgnHash
+ }
+ if opt.Disable == nil {
+ opt.Disable = other.Disable
+ }
}
// Default feed options
@@ -57,6 +65,8 @@ func init() {
DefaultFeedOptions = Options{
MinFreq: &one,
InclImages: &fal,
+ IgnHash: &fal,
+ Disable: &fal,
}
}