X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=cmd%2Fmeta4ra%2Fhash.go;fp=cmd%2Fmeta4ra%2Fhash.go;h=266aa61a59724db4797673acb45dc311b5069ef3;hb=be69a4fc0c240c2772a0f0bf0955b39783e4c48a;hp=0000000000000000000000000000000000000000;hpb=ce902a58a32f42801603475c67dd75da86d4502a;p=meta4ra.git diff --git a/cmd/meta4ra/hash.go b/cmd/meta4ra/hash.go new file mode 100644 index 0000000..266aa61 --- /dev/null +++ b/cmd/meta4ra/hash.go @@ -0,0 +1,63 @@ +// meta4ra -- Metalink 4.0 utilities +// Copyright (C) 2021-2024 Sergey Matveev +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 3 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package main + +import ( + "bufio" + "flag" + "fmt" + "io" + "log" + "os" + "strings" + + meta4ra "go.stargrave.org/meta4ra/internal" +) + +func runHash() { + hashes := flag.String("hashes", meta4ra.HashesDefault, + "hash-name:commandline[,...]") + flag.Usage = func() { + fmt.Fprintf(flag.CommandLine.Output(), + "Usage: %s [-hashes ...] < data | read hash name\n", os.Args[0]) + flag.PrintDefaults() + fmt.Fprint(flag.CommandLine.Output(), ` +Only the first hash from -hashes will be used. +`) + } + flag.Parse() + + hsh := *hashes + if i := strings.Index(hsh, ","); i != -1 { + hsh = hsh[:i] + } + hasher, err := meta4ra.NewHasher(hsh) + if err != nil { + log.Fatalln(err) + } + if err = hasher.Start(); err != nil { + log.Fatalln(err) + } + if _, err = io.Copy(hasher, bufio.NewReaderSize( + os.Stdin, meta4ra.BufLen)); err != nil { + log.Fatalln(err) + } + sums, err := hasher.Sums() + if err != nil { + log.Fatalln(err) + } + fmt.Println(sums[0].Hash, sums[0].Type) +}