make-samples.go
1 package make_samples 2 3 import ( 4 "github.com/spf13/cobra" 5 "github.com/thunderbrewhq/binana/go/app" 6 "github.com/thunderbrewhq/binana/go/app/cmd/root" 7 "github.com/thunderbrewhq/binana/go/app/util" 8 "github.com/thunderbrewhq/binana/go/app/util/dbutil" 9 ) 10 11 var make_samples_cmd = cobra.Command{ 12 Use: "make-samples", 13 Run: run_make_samples_command, 14 } 15 16 func init() { 17 f := make_samples_cmd.Flags() 18 f.StringP("source", "s", "", "required: source tree of sample binaries") 19 f.StringP("output-file", "o", "", "write the database to a file") 20 f.StringSlice("direct-mirror", nil, "list of direct mirror URLs that already contain the sample binaries") 21 f.StringSlice("ipfs-gateway", nil, "list of IPFS gateways") 22 f.StringP("format", "f", "json", "the format of the output database [json|parquet]") 23 root.RootCmd.AddCommand(&make_samples_cmd) 24 } 25 26 func run_make_samples_command(cmd *cobra.Command, args []string) { 27 f := cmd.Flags() 28 var ( 29 params util.MakeSampleDatabaseParams 30 err error 31 format string 32 ) 33 params.Source, err = f.GetString("source") 34 if err != nil { 35 app.Fatal(err) 36 } 37 if params.Source == "" { 38 cmd.Help() 39 return 40 } 41 params.Output, err = f.GetString("output-file") 42 if err != nil { 43 app.Fatal(err) 44 } 45 format, err = f.GetString("format") 46 if err != nil { 47 app.Fatal(err) 48 } 49 switch format { 50 case "json": 51 params.Format = dbutil.DatabaseJSON 52 case "parquet": 53 params.Format = dbutil.DatabaseParquet 54 default: 55 app.Fatal("unknown format", format) 56 } 57 58 params.DirectMirrors, err = f.GetStringSlice("direct-mirror") 59 if err != nil { 60 app.Fatal(err) 61 } 62 params.IPFSGateways, err = f.GetStringSlice("ipfs-gateway") 63 if err != nil { 64 app.Fatal(err) 65 } 66 67 util.MakeSampleDatabase(¶ms) 68 }