From ae5e3daea306070ef2f091f12ef2a1588a29653a Mon Sep 17 00:00:00 2001 From: "T.v.Dein" Date: Mon, 18 Dec 2023 20:18:37 +0100 Subject: [PATCH] Dev (#8) * fixed conf parsing: variables can now be omitted from the config * fix newlines: use CRLF on windows * bump version --------- Co-authored-by: Thomas von Dein --- config.go | 12 +++++++----- main.go | 18 +++++++++++------- store.go | 7 ++++++- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/config.go b/config.go index 06f42b8..405983b 100644 --- a/config.go +++ b/config.go @@ -23,21 +23,23 @@ import ( ) const ( - VERSION string = "0.0.5" + VERSION string = "0.0.6" Baseuri string = "https://www.kleinanzeigen.de" Listuri string = "/s-bestandsliste.html" Defaultdir string = "." DefaultTemplate string = "Title: {{.Title}}\nPrice: {{.Price}}\nId: {{.Id}}\n" + "Category: {{.Category}}\nCondition: {{.Condition}}\nCreated: {{.Created}}\n\n{{.Text}}\n" + DefaultTemplateWin string = "Title: {{.Title}}\r\nPrice: {{.Price}}\r\nId: {{.Id}}\r\n" + + "Category: {{.Category}}\r\nCondition: {{.Condition}}\r\nCreated: {{.Created}}\r\n\r\n{{.Text}}\r\n" Useragent string = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" ) type Config struct { - Verbose bool `hcl:"verbose"` - User int `hcl:"user"` - Outdir string `hcl:"outdir"` - Template string `hcl:"template"` + Verbose *bool `hcl:"verbose"` + User *int `hcl:"user"` + Outdir *string `hcl:"outdir"` + Template *string `hcl:"template"` } func ParseConfigfile(file string) (*Config, error) { diff --git a/main.go b/main.go index e3f11ca..18c7d15 100644 --- a/main.go +++ b/main.go @@ -22,6 +22,7 @@ import ( "fmt" "log/slog" "os" + "runtime" "runtime/debug" "github.com/lmittmann/tint" @@ -109,7 +110,7 @@ func Main() int { return Die(err) } - if enableverbose || conf.Verbose { + if enableverbose || *conf.Verbose { logLevel.Set(slog.LevelInfo) } @@ -135,8 +136,8 @@ func Main() int { slog.Debug("config", "conf", conf) if len(dir) == 0 { - if len(conf.Outdir) > 0 { - dir = conf.Outdir + if len(*conf.Outdir) > 0 { + dir = *conf.Outdir } else { dir = Defaultdir } @@ -150,8 +151,11 @@ func Main() int { // which template to use template := DefaultTemplate - if len(conf.Template) > 0 { - template = conf.Template + if runtime.GOOS == "windows" { + template = DefaultTemplateWin + } + if len(*conf.Template) > 0 { + template = *conf.Template } // directly backup ad listing[s] @@ -167,8 +171,8 @@ func Main() int { } // backup all ads of the given user (via config or cmdline) - if uid == 0 && conf.User > 0 { - uid = conf.User + if uid == 0 && *conf.User > 0 { + uid = *conf.User } if uid > 0 { diff --git a/store.go b/store.go index 7c4806f..4d52cbe 100644 --- a/store.go +++ b/store.go @@ -22,6 +22,7 @@ import ( "log/slog" "os" "path/filepath" + "runtime" "strings" tpl "text/template" ) @@ -41,7 +42,11 @@ func WriteAd(dir string, ad *Ad, template string) error { return err } - ad.Text = strings.ReplaceAll(ad.Text, "
", "\n") + if runtime.GOOS == "windows" { + ad.Text = strings.ReplaceAll(ad.Text, "
", "\r\n") + } else { + ad.Text = strings.ReplaceAll(ad.Text, "
", "\n") + } tmpl, err := tpl.New("adlisting").Parse(template) if err != nil {