From 0bf75b8fa879a2a78389fb22d5c784642a0ddf71 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 12 Jul 2022 16:12:01 +1000 Subject: [PATCH] Move cmd/torrent-create into torrent create --- cmd/torrent-create/main.go | 67 -------------------------------------- cmd/torrent/create.go | 62 +++++++++++++++++++++++++++++++++++ cmd/torrent/main.go | 1 + 3 files changed, 63 insertions(+), 67 deletions(-) delete mode 100644 cmd/torrent-create/main.go create mode 100644 cmd/torrent/create.go diff --git a/cmd/torrent-create/main.go b/cmd/torrent-create/main.go deleted file mode 100644 index 2f92978f..00000000 --- a/cmd/torrent-create/main.go +++ /dev/null @@ -1,67 +0,0 @@ -package main - -import ( - "log" - "os" - - "github.com/anacrolix/tagflag" - - "github.com/anacrolix/torrent/bencode" - "github.com/anacrolix/torrent/metainfo" -) - -var builtinAnnounceList = [][]string{ - {"http://p4p.arenabg.com:1337/announce"}, - {"udp://tracker.opentrackr.org:1337/announce"}, - {"udp://tracker.openbittorrent.com:6969/announce"}, -} - -func main() { - log.SetFlags(log.Flags() | log.Lshortfile) - var args struct { - AnnounceList []string `name:"a" help:"extra announce-list tier entry"` - EmptyAnnounceList bool `name:"n" help:"exclude default announce-list entries"` - Comment string `name:"t" help:"comment"` - CreatedBy string `name:"c" help:"created by"` - InfoName *string `name:"i" help:"override info name (defaults to ROOT)"` - Url []string `name:"u" help:"add webseed url"` - tagflag.StartPos - Root string - } - tagflag.Parse(&args, tagflag.Description("Creates a torrent metainfo for the file system rooted at ROOT, and outputs it to stdout.")) - mi := metainfo.MetaInfo{ - AnnounceList: builtinAnnounceList, - } - if args.EmptyAnnounceList { - mi.AnnounceList = make([][]string, 0) - } - for _, a := range args.AnnounceList { - mi.AnnounceList = append(mi.AnnounceList, []string{a}) - } - mi.SetDefaults() - if len(args.Comment) > 0 { - mi.Comment = args.Comment - } - if len(args.CreatedBy) > 0 { - mi.CreatedBy = args.CreatedBy - } - mi.UrlList = args.Url - info := metainfo.Info{ - PieceLength: 256 * 1024, - } - err := info.BuildFromFilePath(args.Root) - if err != nil { - log.Fatal(err) - } - if args.InfoName != nil { - info.Name = *args.InfoName - } - mi.InfoBytes, err = bencode.Marshal(info) - if err != nil { - log.Fatal(err) - } - err = mi.Write(os.Stdout) - if err != nil { - log.Fatal(err) - } -} diff --git a/cmd/torrent/create.go b/cmd/torrent/create.go new file mode 100644 index 00000000..d8681e8e --- /dev/null +++ b/cmd/torrent/create.go @@ -0,0 +1,62 @@ +package main + +import ( + "github.com/anacrolix/bargle" + "github.com/anacrolix/torrent/bencode" + "github.com/anacrolix/torrent/metainfo" + "os" +) + +var builtinAnnounceList = [][]string{ + {"http://p4p.arenabg.com:1337/announce"}, + {"udp://tracker.opentrackr.org:1337/announce"}, + {"udp://tracker.openbittorrent.com:6969/announce"}, +} + +func create() (cmd bargle.Command) { + var args struct { + AnnounceList []string `name:"a" help:"extra announce-list tier entry"` + EmptyAnnounceList bool `name:"n" help:"exclude default announce-list entries"` + Comment string `name:"t" help:"comment"` + CreatedBy string `name:"c" help:"created by"` + InfoName *string `name:"i" help:"override info name (defaults to ROOT)"` + Url []string `name:"u" help:"add webseed url"` + Root string `arg:"positional"` + } + cmd = bargle.FromStruct(&args) + cmd.Desc = "Creates a torrent metainfo for the file system rooted at ROOT, and outputs it to stdout" + cmd.DefaultAction = func() (err error) { + mi := metainfo.MetaInfo{ + AnnounceList: builtinAnnounceList, + } + if args.EmptyAnnounceList { + mi.AnnounceList = make([][]string, 0) + } + for _, a := range args.AnnounceList { + mi.AnnounceList = append(mi.AnnounceList, []string{a}) + } + mi.SetDefaults() + if len(args.Comment) > 0 { + mi.Comment = args.Comment + } + if len(args.CreatedBy) > 0 { + mi.CreatedBy = args.CreatedBy + } + mi.UrlList = args.Url + info := metainfo.Info{} + err = info.BuildFromFilePath(args.Root) + if err != nil { + return + } + if args.InfoName != nil { + info.Name = *args.InfoName + } + mi.InfoBytes, err = bencode.Marshal(info) + if err != nil { + return + } + err = mi.Write(os.Stdout) + return + } + return +} diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go index 4a0fc3e3..adcf4394 100644 --- a/cmd/torrent/main.go +++ b/cmd/torrent/main.go @@ -113,6 +113,7 @@ func main() { Desc: "prints various protocol default version strings", }}, bargle.Subcommand{Name: "serve", Command: serve()}, + bargle.Subcommand{Name: "create", Command: create()}, ) main.Run() } -- 2.44.0