Source File: go-coreutils/sha512sum/main.go

package main

import (
	"fmt"
	"flag"
	"os"
	"log"
	"crypto/sha512"
)

type Opts struct {
	Inputs []string
}

func parse_opts() Opts {
	var opts Opts

	flag.Parse()
	opts.Inputs = flag.Args()

	return opts
}

func to_hex(hash [sha512.Size]byte) string {
	result := ""

	for _, b := range hash {
		result += fmt.Sprintf("%x", b)
	}

	return result
}

func main() {
	opts := parse_opts()

	for _, fname := range opts.Inputs {
		in_data, err := os.ReadFile(fname)
		if err != nil { log.Fatal(err) }

		hash := sha512.Sum512(in_data)

		fmt.Println(to_hex(hash), fname)
	}
}