func FetchStoreCommand() common.Command { var ( bbsConfig config_finder.BBSConfig ) flagSet := flag.NewFlagSet("fetch-store", flag.ExitOnError) bbsConfig.PopulateFlags(flagSet) return common.Command{ Name: "fetch-store", Description: "[file] - Fetch contents of the BBS", FlagSet: flagSet, Run: func(args []string) { bbsClient, err := config_finder.NewBBS(bbsConfig) common.ExitIfError("Could not construct BBS", err) if len(args) == 0 { err := fetch_store.Fetch(bbsClient, os.Stdout) common.ExitIfError("Failed to fetch store", err) } else { f, err := os.Create(args[0]) common.ExitIfError("Could not create file", err) err = fetch_store.Fetch(bbsClient, f) common.ExitIfError("Failed to fetch store", err) f.Close() } }, } }
func dump(bbsClient bbs.Client, verbose bool, tasks bool, lrps bool, clear bool) error { reader, writer := io.Pipe() errs := make(chan error) go func() { err := fetch_store.Fetch(bbsClient, writer) errs <- err }() go func() { err := print_store.PrintStore(verbose, tasks, lrps, clear, reader) errs <- err }() err1 := <-errs if err1 != nil { return err1 } err2 := <-errs if err2 != nil { return err2 } return nil }