Initial commit
This commit is contained in:
57
cmd/clear.go
Normal file
57
cmd/clear.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
|
||||
"github.com/samber/lo"
|
||||
"github.com/spf13/cobra"
|
||||
"hub.cybercinch.nz/guisea/go-template/internal/app"
|
||||
"hub.cybercinch.nz/guisea/go-template/internal/color"
|
||||
"hub.cybercinch.nz/guisea/go-template/internal/filesystem"
|
||||
"hub.cybercinch.nz/guisea/go-template/internal/icon"
|
||||
"hub.cybercinch.nz/guisea/go-template/internal/util"
|
||||
"hub.cybercinch.nz/guisea/go-template/internal/where"
|
||||
)
|
||||
|
||||
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()
|
||||
}
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user