github.com/GGP1/kure@v0.8.4/commands/it/file.go (about) 1 package it 2 3 import ( 4 "fmt" 5 6 "github.com/GGP1/kure/db/file" 7 8 "github.com/AlecAivazis/survey/v2" 9 bolt "go.etcd.io/bbolt" 10 ) 11 12 func fileMultiselect(db *bolt.DB) ([]string, error) { 13 files, err := file.ListNames(db) 14 if err != nil { 15 return nil, err 16 } 17 if len(files) == 0 { 18 fmt.Println("\nNo files to select") 19 return nil, nil 20 } 21 22 namesQs := []*survey.Question{ 23 { 24 Name: "names", 25 Prompt: &survey.MultiSelect{ 26 Message: "Choose files:", 27 Options: files, 28 VimMode: true, 29 }, 30 }, 31 } 32 33 names := []string{} 34 if err := ask(namesQs, &names); err != nil { 35 return nil, err 36 } 37 38 return names, nil 39 } 40 41 func fileMvNames(db *bolt.DB) ([]string, error) { 42 files, err := file.ListNames(db) 43 if err != nil { 44 return nil, err 45 } 46 if len(files) == 0 { 47 fmt.Println("\nNo files to select") 48 return nil, nil 49 } 50 51 // Request src 52 qs := selectQs("Source", "", files) 53 src := struct{ Name string }{} 54 if err := ask(qs, &src); err != nil { 55 return nil, err 56 } 57 58 // Request dst 59 dstQs := &survey.Input{ 60 Message: "Destination:", 61 } 62 dst, err := askOne(dstQs) 63 if err != nil { 64 return nil, err 65 } 66 67 return []string{src.Name, dst}, nil 68 }