mirror of
https://github.com/ddworken/hishtory.git
synced 2025-08-01 11:16:42 +02:00
113 lines
3.2 KiB
Go
113 lines
3.2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"slices"
|
|
|
|
"github.com/ddworken/hishtory/client/hctx"
|
|
"github.com/ddworken/hishtory/client/lib"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var configDeleteCmd = &cobra.Command{
|
|
Use: "config-delete",
|
|
Aliases: []string{"config-remove"},
|
|
Short: "Delete a config option",
|
|
GroupID: GROUP_ID_CONFIG,
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
lib.CheckFatalError(cmd.Help())
|
|
os.Exit(1)
|
|
},
|
|
}
|
|
|
|
var deleteCustomColumnsCmd = &cobra.Command{
|
|
Use: "custom-columns",
|
|
Aliases: []string{"custom-column"},
|
|
Short: "Delete a custom column",
|
|
Args: cobra.ExactArgs(1),
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
ctx := hctx.MakeContext()
|
|
config := hctx.GetConf(ctx)
|
|
columnName := args[0]
|
|
if config.CustomColumns == nil {
|
|
log.Fatalf("Did not find a column with name %#v to delete (current columns = %#v)", columnName, config.CustomColumns)
|
|
}
|
|
// Delete it from the list of custom columns
|
|
newColumns := make([]hctx.CustomColumnDefinition, 0)
|
|
foundColumnToDelete := false
|
|
for _, c := range config.CustomColumns {
|
|
if c.ColumnName == columnName {
|
|
foundColumnToDelete = true
|
|
} else {
|
|
newColumns = append(newColumns, c)
|
|
}
|
|
}
|
|
if !foundColumnToDelete {
|
|
log.Fatalf("Did not find a column with name %#v to delete (current columns = %#v)", columnName, config.CustomColumns)
|
|
}
|
|
config.CustomColumns = newColumns
|
|
// And also delete it from the list of displayed columns
|
|
newDisplayedColumns := make([]string, 0)
|
|
for _, c := range config.DisplayedColumns {
|
|
if c != columnName {
|
|
newDisplayedColumns = append(newDisplayedColumns, c)
|
|
}
|
|
}
|
|
config.DisplayedColumns = newDisplayedColumns
|
|
lib.CheckFatalError(hctx.SetConfig(config))
|
|
},
|
|
}
|
|
|
|
var deleteDisplayedColumnCommand = &cobra.Command{
|
|
Use: "displayed-columns",
|
|
Aliases: []string{"displayed-column"},
|
|
Short: "Delete a displayed column",
|
|
Args: cobra.MinimumNArgs(1),
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
ctx := hctx.MakeContext()
|
|
config := hctx.GetConf(ctx)
|
|
deletedColumns := args
|
|
newColumns := make([]string, 0)
|
|
for _, c := range config.DisplayedColumns {
|
|
if !slices.Contains(deletedColumns, c) {
|
|
newColumns = append(newColumns, c)
|
|
}
|
|
}
|
|
config.DisplayedColumns = newColumns
|
|
lib.CheckFatalError(hctx.SetConfig(config))
|
|
},
|
|
}
|
|
|
|
var deleteDefaultSearchColumnCmd = &cobra.Command{
|
|
Use: "default-search-columns",
|
|
Aliases: []string{"default-search-column"},
|
|
Short: "Delete a default search column",
|
|
Args: cobra.MinimumNArgs(1),
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
ctx := hctx.MakeContext()
|
|
config := hctx.GetConf(ctx)
|
|
deletedColumns := args
|
|
newColumns := make([]string, 0)
|
|
if slices.Contains(deletedColumns, "command") {
|
|
lib.CheckFatalError(fmt.Errorf("command is a required default search column"))
|
|
}
|
|
for _, c := range config.DefaultSearchColumns {
|
|
if !slices.Contains(deletedColumns, c) {
|
|
newColumns = append(newColumns, c)
|
|
}
|
|
}
|
|
config.DefaultSearchColumns = newColumns
|
|
lib.CheckFatalError(hctx.SetConfig(config))
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(configDeleteCmd)
|
|
configDeleteCmd.AddCommand(deleteCustomColumnsCmd)
|
|
configDeleteCmd.AddCommand(deleteDisplayedColumnCommand)
|
|
configDeleteCmd.AddCommand(deleteDefaultSearchColumnCmd)
|
|
}
|