]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Move cmd/torrent-create into torrent create
authorMatt Joiner <anacrolix@gmail.com>
Tue, 12 Jul 2022 06:12:01 +0000 (16:12 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 12 Jul 2022 06:12:01 +0000 (16:12 +1000)
cmd/torrent-create/main.go [deleted file]
cmd/torrent/create.go [new file with mode: 0644]
cmd/torrent/main.go

diff --git a/cmd/torrent-create/main.go b/cmd/torrent-create/main.go
deleted file mode 100644 (file)
index 2f92978..0000000
+++ /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 (file)
index 0000000..d8681e8
--- /dev/null
@@ -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
+}
index 4a0fc3e3ff633cffc1b8f59c659fb3eb2c325a66..adcf4394e33c28dbaa2339df2f435e3d837ccc5c 100644 (file)
@@ -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()
 }