]> Sergey Matveev's repositories - meta4ra.git/blobdiff - cmd/meta4ra/create.go
*-hashes-detect, *-hash, *-check -stdin/-all-hashes, optional builtins
[meta4ra.git] / cmd / meta4ra / create.go
similarity index 88%
rename from cmd/meta4-create/main.go
rename to cmd/meta4ra/create.go
index 1e8b69eaf4307bbe6c11530a8ac212f940f06dd7..cfa7f4ef1e5c187b990ab2a226b2e1f4d494c8ac 100644 (file)
@@ -13,7 +13,6 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-// Metalink 4.0 creator
 package main
 
 import (
@@ -25,13 +24,12 @@ import (
        "log"
        "os"
        "path"
-       "strings"
        "time"
 
-       "go.stargrave.org/meta4ra"
+       meta4ra "go.stargrave.org/meta4ra/internal"
 )
 
-func main() {
+func runCreate() {
        fn := flag.String("fn", "", "Filename")
        mtime := flag.String("mtime", "", "Take that file's mtime as a Published date")
        desc := flag.String("desc", "", "Description")
@@ -39,8 +37,8 @@ func main() {
                "Path to OpenPGP .asc signature file for inclusion")
        sigSSH := flag.String("sig-ssh", "",
                "Path to OpenSSH .sig signature file for inclusion")
-       hashes := flag.String("hashes",
-               strings.Join(meta4ra.HashesDefault, ","), "hash-name:command-s")
+       hashes := flag.String("hashes", meta4ra.HashesDefault,
+               "hash-name:commandline[,...]")
        noPublished := flag.Bool("no-published", false,
                "Do not include Published field")
        noGenerator := flag.Bool("no-generator", false,
@@ -52,7 +50,7 @@ func main() {
                flag.PrintDefaults()
        }
        flag.Parse()
-       log.SetFlags(log.Lshortfile)
+
        if *fn == "" {
                log.Fatalln("empty -fn")
        }
@@ -60,20 +58,27 @@ func main() {
        for _, u := range flag.Args() {
                urls = append(urls, meta4ra.URL{URL: u})
        }
-       h := meta4ra.NewHasher(*hashes)
+       h, err := meta4ra.NewHasher(*hashes)
+       if err != nil {
+               log.Fatalln(err)
+       }
        h.Start()
-       br := bufio.NewReaderSize(os.Stdin, 1<<20)
-       buf := make([]byte, 1<<20)
+       br := bufio.NewReaderSize(os.Stdin, meta4ra.BufLen)
+       buf := make([]byte, meta4ra.BufLen)
        size, err := io.CopyBuffer(h, br, buf)
        if err != nil {
                log.Fatalln(err)
        }
+       dgsts, err := h.Sums()
+       if err != nil {
+               log.Fatalln(err)
+       }
        f := meta4ra.File{
                Name:        path.Base(*fn),
                Description: *desc,
                Size:        uint64(size),
                URLs:        urls,
-               Hashes:      h.Sums(),
+               Hashes:      dgsts,
        }
        if *sigPGP != "" {
                sigData, err := os.ReadFile(*sigPGP)