2024-08-30 11:25:28 +12:00
|
|
|
package cmd
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/charmbracelet/lipgloss"
|
|
|
|
|
|
|
|
|
|
"github.com/samber/lo"
|
|
|
|
|
"github.com/spf13/cobra"
|
2024-08-30 12:21:09 +12:00
|
|
|
"hub.cybercinch.nz/guisea/gosqldump/internal/app"
|
|
|
|
|
"hub.cybercinch.nz/guisea/gosqldump/internal/color"
|
|
|
|
|
"hub.cybercinch.nz/guisea/gosqldump/internal/filesystem"
|
|
|
|
|
"hub.cybercinch.nz/guisea/gosqldump/internal/icon"
|
|
|
|
|
"hub.cybercinch.nz/guisea/gosqldump/internal/util"
|
|
|
|
|
"hub.cybercinch.nz/guisea/gosqldump/internal/where"
|
2024-08-30 11:25:28 +12:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type clearTarget struct {
|
|
|
|
|
name string
|
|
|
|
|
clear func() error
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Specify what can be cleared
|
|
|
|
|
var clearTargets = []clearTarget{
|
|
|
|
|
{"cache", func() error {
|
|
|
|
|
return filesystem.Api().RemoveAll(where.Cache())
|
|
|
|
|
}},
|
|
|
|
|
{"logs", func() error {
|
|
|
|
|
return filesystem.Api().RemoveAll(where.Logs())
|
|
|
|
|
}},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
rootCmd.AddCommand(clearCmd)
|
|
|
|
|
for _, n := range clearTargets {
|
|
|
|
|
clearCmd.Flags().BoolP(n.name, string(n.name[0]), false, "clear "+n.name)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var clearCmd = &cobra.Command{
|
|
|
|
|
Use: "clear",
|
|
|
|
|
Short: "Clears sidelined files produced by the " + app.Name,
|
|
|
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
|
|
|
successStyle := lipgloss.NewStyle().Foreground(color.Green).Render
|
|
|
|
|
var didSomething bool
|
|
|
|
|
for _, n := range clearTargets {
|
|
|
|
|
if lo.Must(cmd.Flags().GetBool(n.name)) {
|
|
|
|
|
handleErr(n.clear())
|
|
|
|
|
fmt.Printf("%s %s cleared\n", successStyle(icon.Check), util.Capitalize(n.name))
|
|
|
|
|
didSomething = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !didSomething {
|
|
|
|
|
_ = cmd.Help()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|