* 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 <tom@vondein.org>
This commit is contained in:
T.v.Dein
2023-12-18 20:18:37 +01:00
committed by Thomas von Dein
parent 1c6d832b20
commit ae5e3daea3
3 changed files with 24 additions and 13 deletions

View File

@@ -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) {

18
main.go
View File

@@ -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 {

View File

@@ -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, "<br/>", "\n")
if runtime.GOOS == "windows" {
ad.Text = strings.ReplaceAll(ad.Text, "<br/>", "\r\n")
} else {
ad.Text = strings.ReplaceAll(ad.Text, "<br/>", "\n")
}
tmpl, err := tpl.New("adlisting").Parse(template)
if err != nil {