README | 8 ++++---- cmd/check.go | 11 +++++++---- cmd/list.go | 15 +++++++++------ diff --git a/README b/README index 5068b7984520bd07a25001c2c6d35f8dcdc65d61670d646a299bde8eead33446..b1fb83da14cd5f19b133ef490ec20b61530163063ee14a00403bc013c624e2be 100644 --- a/README +++ b/README @@ -22,13 +22,13 @@ Example attempt to download .meta4's file from Russia-based location as most preferred, with fallback to Europe continent, leaving location-less next, randomising remaining: - fn=$(meta4ra-list -meta4 .meta4 | head -1) - size=$(meta4ra-list -meta4 .meta4 -size $fn) - meta4ra-list -meta4 .meta4 $fn | + fn=$(meta4ra-list .meta4 | head -1) + size=$(meta4ra-list -size .meta4 $fn) + meta4ra-list .meta4 $fn | meta4ra-url-sort ru c:eu "" rand | while read url ; do meta4ra-dl -size $size -progress "$url" | - meta4ra-check -meta4 .meta4 -pipe $fn >$fn || { + meta4ra-check -pipe .meta4 $fn >$fn || { rm $fn continue } diff --git a/cmd/check.go b/cmd/check.go index c0830d8bb6fc31a0172b1a1ac295b1749c3dbea60957911b402dc10a8f571409..b3124ff4d9328cdd7356cdbc47f412498ca8bee4e123e58c5534d98d9a16867b 100644 --- a/cmd/check.go +++ b/cmd/check.go @@ -35,10 +35,9 @@ progress := flag.Bool("progress", false, "Show progress of piping/downloading") allHashes := flag.Bool("all-hashes", false, "Check all hashes, not the first common one") hashes := flag.String("hashes", meta4ra.HashesDefault, "hash-name:commandline[,...]") - metaPath := flag.String("meta4", "file.meta4", "Metalink file") flag.Usage = func() { fmt.Fprintf(flag.CommandLine.Output(), - "Usage: %s [options] [FILE ...]\n", os.Args[0]) + "Usage: %s [options] FILE.meta4 [FILE ...]\n", os.Args[0]) flag.PrintDefaults() fmt.Fprint(flag.CommandLine.Output(), ` If no FILEs are specified, then all s from metalink are searched and @@ -58,9 +57,13 @@ fmt.Println(meta4ra.Warranty) return } + if flag.NArg() < 1 { + flag.Usage() + os.Exit(1) + } var meta meta4ra.Metalink { - data, err := os.ReadFile(*metaPath) + data, err := os.ReadFile(flag.Arg(0)) if err != nil { log.Fatal(err) } @@ -71,7 +74,7 @@ } } toCheck := make(map[string]string) - for _, fn := range flag.Args() { + for _, fn := range flag.Args()[1:] { toCheck[path.Base(fn)] = fn } if *pipe && len(toCheck) != 1 { diff --git a/cmd/list.go b/cmd/list.go index a2c3720e16a47f6758afbcd9c1ea82e144bcf9ad096dd34e7c2867353651599e..ac8f35071371441e0c93647f243abc417e8390ed3a6f3b80afbc7725d29937a6 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -28,12 +28,11 @@ meta4ra "go.stargrave.org/meta4ra/internal" ) func runList() { - metaPath := flag.String("meta4", "file.meta4", "Metalink file") doSize := flag.Bool("size", false, "Print file's size") doSig := flag.Bool("sig", false, "Extract signature files") flag.Usage = func() { fmt.Fprintf(flag.CommandLine.Output(), - "Usage: %s [options] [FILE]\n", os.Args[0]) + "Usage: %s [options] FILE.meta4 [FILE]\n", os.Args[0]) flag.PrintDefaults() fmt.Fprint(flag.CommandLine.Output(), ` If FILE is not specified, then list all files of .meta4. @@ -51,9 +50,13 @@ fmt.Println(meta4ra.Warranty) return } + if flag.NArg() < 1 { + flag.Usage() + os.Exit(1) + } var meta meta4ra.Metalink { - data, err := os.ReadFile(*metaPath) + data, err := os.ReadFile(flag.Arg(0)) if err != nil { log.Fatal(err) } @@ -65,7 +68,7 @@ } bad := false for _, f := range meta.Files { - if flag.NArg() == 0 { + if flag.NArg() == 1 { for _, sig := range f.Signature { if !*doSig { continue @@ -91,7 +94,7 @@ } } fmt.Println(f.Name) } else { - if f.Name != flag.Arg(0) { + if f.Name != flag.Arg(1) { continue } if *doSize { @@ -99,7 +102,7 @@ fmt.Println(f.Size) break } for _, u := range f.URLs { - fmt.Printf("%d|%s|%s\n", u.Priority, u.Location, u.URL) + fmt.Println(u.String()) } break }