]> Sergey Matveev's repositories - btrtrc.git/blob - cmd/torrent-create/main.go
Switch to goimports import sorting
[btrtrc.git] / cmd / torrent-create / main.go
1 package main
2
3 import (
4         "log"
5         "os"
6
7         "github.com/anacrolix/tagflag"
8         "github.com/anacrolix/torrent/bencode"
9         "github.com/anacrolix/torrent/metainfo"
10 )
11
12 var (
13         builtinAnnounceList = [][]string{
14                 {"udp://tracker.openbittorrent.com:80"},
15                 {"udp://tracker.publicbt.com:80"},
16                 {"udp://tracker.istole.it:6969"},
17         }
18 )
19
20 func main() {
21         log.SetFlags(log.Flags() | log.Lshortfile)
22         var args struct {
23                 AnnounceList []string `name:"a" help:"extra announce-list tier entry"`
24                 tagflag.StartPos
25                 Root string
26         }
27         tagflag.Parse(&args, tagflag.Description("Creates a torrent metainfo for the file system rooted at ROOT, and outputs it to stdout."))
28         mi := metainfo.MetaInfo{
29                 AnnounceList: builtinAnnounceList,
30         }
31         for _, a := range args.AnnounceList {
32                 mi.AnnounceList = append(mi.AnnounceList, []string{a})
33         }
34         mi.SetDefaults()
35         info := metainfo.Info{
36                 PieceLength: 256 * 1024,
37         }
38         err := info.BuildFromFilePath(args.Root)
39         if err != nil {
40                 log.Fatal(err)
41         }
42         mi.InfoBytes, err = bencode.Marshal(info)
43         if err != nil {
44                 log.Fatal(err)
45         }
46         err = mi.Write(os.Stdout)
47         if err != nil {
48                 log.Fatal(err)
49         }
50 }