Files
forever-files/cmd/cli/gather.go

70 lines
1.5 KiB
Go

package main
import (
"fmt"
"github.com/dustin/go-humanize"
"forever-files/db"
"forever-files/source"
"forever-files/types"
"github.com/urfave/cli/v2"
)
func gather() *cli.Command {
return &cli.Command{
Name: "gather",
Aliases: []string{"g"},
Usage: "Collects the files to be backed up and stores their info in the database",
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "reset",
Usage: "Reset the database before gathering info",
Aliases: []string{"r"},
Action: func(c *cli.Context, reset bool) error {
if reset {
err := db.DeleteDB(types.AppName)
if err != nil {
return fmt.Errorf("error deleting db: %w", err)
}
}
return nil
},
},
baseDirFlag(),
},
Action: func(c *cli.Context) error {
store, err := db.NewDB(types.AppName)
if err != nil {
panic(fmt.Errorf("error creating db: %w", err))
}
defer store.Close()
err = store.Migrate()
if err != nil {
panic(fmt.Errorf("error migrating db: %w", err))
}
baseDir := c.String("baseDir")
err = source.GatherInfo(baseDir, store)
if err != nil {
return fmt.Errorf("error gathering info: %w", err)
}
fileCount, err := store.GetFileCount()
if err != nil {
return fmt.Errorf("error getting file count: %w", err)
}
totalSize, err := store.GetTotalSize()
if err != nil {
return fmt.Errorf("error getting total size: %w", err)
}
fmt.Printf("Total Files: %v\n", fileCount)
fmt.Printf("Total Size: %v\n", humanize.Bytes(uint64(totalSize)))
return nil
},
}
}