cmd/create.go | 47 ++++++++++++++++++++++++++++++++--------------- internal/common.go | 2 +- diff --git a/cmd/create.go b/cmd/create.go index ed994956cb74ca5aeb82e36424d79c05323a970ad64130527bf72872bd3595eb..e7e7d3243d26a02af60b1c59408f5ce38569c3231e277bec95d59425ae01efec 100644 --- a/cmd/create.go +++ b/cmd/create.go @@ -32,6 +32,7 @@ ) func runCreate() { fn := flag.String("fn", "", "Filename") + add := flag.String("add", "", "Add file to specified .meta4") mtime := flag.String("mtime", "", "Take that file's mtime as a Published date") desc := flag.String("desc", "", "Description") sigPGP := flag.String("sig-pgp", "", @@ -123,26 +124,42 @@ } if *torrent != "" { f.MetaURLs = []meta4ra.MetaURL{{MediaType: "torrent", URL: *torrent}} } - var published time.Time - if *mtime == "" { - published = time.Now() + + var meta meta4ra.Metalink + if *add == "" { + var published time.Time + if *mtime == "" { + published = time.Now() + } else { + var fi fs.FileInfo + fi, err = os.Stat(*mtime) + if err != nil { + log.Fatal(err) + } + published = fi.ModTime() + } + meta.Files = []meta4ra.File{f} + if !*noPublished { + t := published.UTC().Truncate(time.Second) + meta.Published = &t + } + if !*noGenerator { + meta.Generator = meta4ra.Generator + } } else { - var fi fs.FileInfo - fi, err = os.Stat(*mtime) + var data []byte + data, err = os.ReadFile(*add) if err != nil { log.Fatal(err) } - published = fi.ModTime() + err = xml.Unmarshal(data, &meta) + if err != nil { + log.Fatal(err) + } + meta.Files = append(meta.Files, f) } - m := meta4ra.Metalink{Files: []meta4ra.File{f}} - if !*noPublished { - t := published.UTC().Truncate(time.Second) - m.Published = &t - } - if !*noGenerator { - m.Generator = meta4ra.Generator - } - out, err := xml.MarshalIndent(&m, "", " ") + + out, err := xml.MarshalIndent(&meta, "", " ") if err != nil { log.Fatal(err) } diff --git a/internal/common.go b/internal/common.go index b14e12e52543ec90d474126333d9072b0786b0120b1a53861d6523343268cee4..683d28ebbdde647e08892f909053c7005de6f234150d0b77a4041041e51640ea 100644 --- a/internal/common.go +++ b/internal/common.go @@ -21,7 +21,7 @@ "runtime" ) const ( - Generator = "meta4ra/1.2.0" + Generator = "meta4ra/1.3.0" SigMediaTypePGP = "application/pgp-signature" SigMediaTypeSSH = "application/ssh-signature" BufLen = 1 << 20