aboutsummaryrefslogtreecommitdiff
path: root/pkg/config/yaml.go
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-26 22:56:00 +0200
committerRené 'Necoro' Neumann <necoro@necoro.eu>2020-04-26 22:56:00 +0200
commit7f4f70ff21acb35b9d2967bc781dbeecda7e417f (patch)
tree181e55dd9c1f48e08b61238eefffa9bf269b2f8c /pkg/config/yaml.go
parente4871e3834397e34a83a8df62dafe5a0875555ae (diff)
downloadfeed2imap-go-7f4f70ff21acb35b9d2967bc781dbeecda7e417f.tar.gz
feed2imap-go-7f4f70ff21acb35b9d2967bc781dbeecda7e417f.tar.bz2
feed2imap-go-7f4f70ff21acb35b9d2967bc781dbeecda7e417f.zip
Handle `target: null` the same as `target: ""`.
Closes #1
Diffstat (limited to 'pkg/config/yaml.go')
-rw-r--r--pkg/config/yaml.go25
1 files changed, 20 insertions, 5 deletions
diff --git a/pkg/config/yaml.go b/pkg/config/yaml.go
index 84f4af6..6d48099 100644
--- a/pkg/config/yaml.go
+++ b/pkg/config/yaml.go
@@ -6,6 +6,12 @@ import (
"gopkg.in/yaml.v3"
)
+const (
+ strTag = "!!str"
+ nullTag = "!!null"
+ emptyTag = ""
+)
+
type config struct {
*Config `yaml:",inline"`
GlobalConfig Map `yaml:",inline"` // need to be duplicated, because the Map in Config is not filled
@@ -18,7 +24,7 @@ type group struct {
}
type configGroupFeed struct {
- Target *string
+ Target yaml.Node
Feed Feed `yaml:",inline"`
Group group `yaml:",inline"`
}
@@ -32,9 +38,18 @@ func (grpFeed *configGroupFeed) isFeed() bool {
}
func (grpFeed *configGroupFeed) target() string {
- if grpFeed.Target != nil {
- return *grpFeed.Target
+ tag := grpFeed.Target.ShortTag()
+ switch tag {
+ case strTag:
+ return grpFeed.Target.Value
+ case nullTag:
+ return ""
+ case emptyTag:
+ // tag not set: continue on
+ default:
+ panic("unexpected tag " + tag + " for target node")
}
+
if grpFeed.Feed.Name != "" {
return grpFeed.Feed.Name
}
@@ -89,13 +104,13 @@ func appTarget(target []string, app string) []string {
}
}
-// Fetch the group structure and populate the `Target` fields in the feeds
+// Fetch the group structure and populate the `targetStr` fields in the feeds
func buildFeeds(cfg []configGroupFeed, target []string, feeds Feeds) error {
for _, f := range cfg {
target := appTarget(target, f.target())
switch {
case f.isFeed() && f.isGroup():
- return fmt.Errorf("Entry with Target %s is both a Feed and a group", target)
+ return fmt.Errorf("Entry with targetStr %s is both a Feed and a group", target)
case f.isFeed():
feedCopy := f.Feed
/version.go?h=v0.4.0&id=47b2f99d09a0dd30ecceb2190773bb6cc337f6d2&follow=1'>Release v0.2.0v0.2.0René 'Necoro' Neumann2-2/+6 2020-05-10Fix building cacheRené 'Necoro' Neumann1-1/+3 2020-05-10Update READMERené 'Necoro' Neumann1-5/+44 2020-05-10Ignore 'dist' folder and build productsRené 'Necoro' Neumann1-0/+2 2020-05-08Print item hashes in debug modeRené 'Necoro' Neumann1-1/+7 2020-05-07Improve html renderingRené 'Necoro' Neumann2-53/+32 2020-05-07Do not assume items to be new when their published date is newer than the las...René 'Necoro' Neumann2-7/+1 2020-05-07Updating some depsRené 'Necoro' Neumann2-2/+7 2020-05-07Better detection if a text starts with html or notRené 'Necoro' Neumann2-4/+13 2020-05-07go fmtRené 'Necoro' Neumann1-3/+2 2020-05-07Add header X-Feed2Imap-GUIDRené 'Necoro' Neumann3-1/+7 2020-05-07update changelogRené 'Necoro' Neumann1-0/+1 2020-05-07FixRené 'Necoro' Neumann1-1/+1 2020-05-07Unified publishedDate and updatedDate into one (just as the old feed2imap...)René 'Necoro' Neumann5-21/+32 2020-05-06Print version during startupRené 'Necoro' Neumann1-1/+1 2020-05-06Improve templateRené 'Necoro' Neumann3-20/+28 2020-05-05Fix pipelineRené 'Necoro' Neumann1-2/+5 2020-05-05Make changelog a part of the release pipeline (untested)René 'Necoro' Neumann2-0/+12