Improve search command

main
Stefano 2021-11-26 17:38:17 +01:00
parent 0c6b340499
commit d2547229dd
1 changed files with 35 additions and 22 deletions

57
main.go
View File

@ -48,29 +48,32 @@ func formatSize(size int64) string {
} }
func searchCommand(args []string) { func searchCommand(args []string) {
searchCmd := flag.NewFlagSet("search", flag.ExitOnError)
sortByFilename := searchCmd.Bool("s", false, "sort results by filename")
args = parseFlags(searchCmd, args)
printer := NewTablePrinter([]string{"File Name", "Size", "URL"}) printer := NewTablePrinter([]string{"File Name", "Size", "URL"})
printer.SetMaxWidths(defaultColWidths) printer.SetMaxWidths(defaultColWidths)
if len(args) < 1 {
fmt.Println("search: no keyword provided.")
os.Exit(1)
}
res, _ := registry.Search(args[0]) res, _ := registry.Search(args[0])
for _, fileInfo := range res { for _, fileInfo := range res {
printer.AddRow(Row{fileInfo.Name, formatSize(fileInfo.Size), fileInfo.Url}) printer.AddRow(Row{fileInfo.Name, formatSize(fileInfo.Size), fileInfo.Url})
} }
printer.SortByColumn(0) // sort by filename if *sortByFilename {
printer.SortByColumn(0)
}
printer.Print() printer.Print()
} }
func doTransfer(transfer *XdccTransfer) { func transferLoop(transfer *XdccTransfer) {
//pb := NewProgressBar() pb := NewProgressBar()
err := transfer.Start()
fmt.Println(err)
if err != nil {
fmt.Println(err)
return
}
evts := transfer.PollEvents() evts := transfer.PollEvents()
quit := false quit := false
@ -78,20 +81,30 @@ func doTransfer(transfer *XdccTransfer) {
e := <-evts e := <-evts
switch evtType := e.(type) { switch evtType := e.(type) {
case *TransferStartedEvent: case *TransferStartedEvent:
// pb.SetTotal(int(evtType.FileSize)) pb.SetTotal(int(evtType.FileSize))
// pb.SetFileName(evtType.FileName) pb.SetFileName(evtType.FileName)
// pb.SetState(ProgressStateDownloading) pb.SetState(ProgressStateDownloading)
case *TransferProgessEvent: case *TransferProgessEvent:
// pb.Increment(int(evtType.transferBytes)) pb.Increment(int(evtType.transferBytes))
case *TransferCompletedEvent: case *TransferCompletedEvent:
// pb.SetState(ProgressStateCompleted) pb.SetState(ProgressStateCompleted)
print(evtType)
quit = true quit = true
} }
} }
// TODO: do clean-up operations here // TODO: do clean-up operations here
} }
func doTransfer(transfer *XdccTransfer) {
err := transfer.Start()
if err != nil {
fmt.Println(err)
return
}
transferLoop(transfer)
}
func parseFlags(flagSet *flag.FlagSet, args []string) []string { func parseFlags(flagSet *flag.FlagSet, args []string) []string {
findFirstFlag := func(args []string) int { findFirstFlag := func(args []string) int {
for i, arg := range args { for i, arg := range args {
@ -133,11 +146,11 @@ func loadUrlListFile(filePath string) []string {
} }
func getCommand(args []string) { func getCommand(args []string) {
searchCmd := flag.NewFlagSet("get", flag.ExitOnError) getCmd := flag.NewFlagSet("get", flag.ExitOnError)
path := searchCmd.String("o", ".", "output folder of dowloaded file") path := getCmd.String("o", ".", "output folder of dowloaded file")
inputFile := searchCmd.String("i", "", "input file containing a list of urls") inputFile := getCmd.String("i", "", "input file containing a list of urls")
urlList := parseFlags(searchCmd, args) urlList := parseFlags(getCmd, args)
if *inputFile != "" { if *inputFile != "" {
urlList = append(urlList, loadUrlListFile(*inputFile)...) urlList = append(urlList, loadUrlListFile(*inputFile)...)