// 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 (
"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")
"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,
flag.PrintDefaults()
}
flag.Parse()
- log.SetFlags(log.Lshortfile)
+
if *fn == "" {
log.Fatalln("empty -fn")
}
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)