github.com/sqlitebrowser/dio@v0.0.0-20240125125356-b587368e5c6b/cmd/select.go (about)

     1  package cmd
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  
     7  	"github.com/spf13/cobra"
     8  )
     9  
    10  // Selects the default database, or if no database name is given it displays the default database
    11  var selectCmd = &cobra.Command{
    12  	Use:   "select",
    13  	Short: "Selects the default database used by all dio commands",
    14  	RunE: func(cmd *cobra.Command, args []string) error {
    15  		return selectDefault(args)
    16  	},
    17  }
    18  
    19  func init() {
    20  	RootCmd.AddCommand(selectCmd)
    21  }
    22  
    23  func selectDefault(args []string) error {
    24  	// Ensure a database file was given
    25  	var db string
    26  	var err error
    27  	if len(args) == 0 {
    28  		db, err = getDefaultDatabase()
    29  		if err != nil {
    30  			return err
    31  		}
    32  		_, err = fmt.Fprintf(fOut, "Default database: '%s'\n", db)
    33  		if err != nil {
    34  			return err
    35  		}
    36  		return nil
    37  	}
    38  	if len(args) > 1 {
    39  		return errors.New("Only one database can be selected as the default (for now)")
    40  	}
    41  
    42  	// Save the given text string as the default database
    43  	// TODO: Add some error checking here (eg does the database exist locally or remotely?)
    44  	db = args[0]
    45  	err = saveDefaultDatabase(db)
    46  	if err != nil {
    47  		return err
    48  	}
    49  	return nil
    50  }