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  }