package Filesystem
|
|
|
|
import (
|
|
"PackageManager/Client/Database"
|
|
"PackageManager/Client/ProgressBar"
|
|
"PackageManager/Variables"
|
|
|
|
"github.com/vbauerster/mpb"
|
|
bolt "go.etcd.io/bbolt"
|
|
)
|
|
|
|
func CommitFiles() error {
|
|
var (
|
|
fsStatus FilesystemStatus
|
|
indexBucket *bolt.Bucket
|
|
bar *mpb.Bar
|
|
f string
|
|
e error
|
|
)
|
|
|
|
fsStatus, e = GetFilesystemDiff(Variables.RootDir)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
|
|
e = Database.FsDB.Batch(func(tx *bolt.Tx) error {
|
|
indexBucket = tx.Bucket(Variables.FsHashIndexBucket)
|
|
|
|
if len(fsStatus.PickedFiles) > 0 {
|
|
bar = ProgressBar.InitBar("Commiting...", len(fsStatus.PickedFiles))
|
|
for _, f = range fsStatus.PickedFiles {
|
|
bar.Increment()
|
|
e = AddFileToBucket(indexBucket, f)
|
|
if e != nil {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
e = tx.DeleteBucket(Variables.FsHashPicksBucket)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
ProgressBar.CloseBar(bar)
|
|
}
|
|
|
|
return nil
|
|
})
|
|
|
|
return e
|
|
}
|