]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/torrent-create/main.go
metainfo: Add alternative "builder" API
[btrtrc.git] / cmd / torrent-create / main.go
1 package main
2
3 import (
4         "io"
5         "log"
6         "os"
7         "path/filepath"
8         "strings"
9
10         "github.com/docopt/docopt-go"
11
12         "github.com/anacrolix/torrent/metainfo"
13 )
14
15 var (
16         builtinAnnounceList = [][]string{
17                 {"udp://tracker.openbittorrent.com:80"},
18                 {"udp://tracker.publicbt.com:80"},
19                 {"udp://tracker.istole.it:6969"},
20         }
21 )
22
23 func main() {
24         opts, err := docopt.Parse("Usage: torrent-create <root>", nil, true, "", true)
25         if err != nil {
26                 panic(err)
27         }
28         root := opts["<root>"].(string)
29         mi := metainfo.MetaInfo{
30                 AnnounceList: builtinAnnounceList,
31         }
32         mi.SetDefaults()
33         err = mi.Info.BuildFromFilePath(root)
34         if err != nil {
35                 log.Fatal(err)
36         }
37         err = mi.Info.GeneratePieces(func(fi metainfo.FileInfo) (io.ReadCloser, error) {
38                 return os.Open(filepath.Join(root, strings.Join(fi.Path, string(filepath.Separator))))
39         })
40         if err != nil {
41                 log.Fatalf("error generating pieces: %s", err)
42         }
43         err = mi.Write(os.Stdout)
44         if err != nil {
45                 log.Fatal(err)
46         }
47 }