fix tracking of removed files/dirs
This commit is contained in:
parent
9cd60dc8eb
commit
b9326ba7ab
69
index.go
69
index.go
@ -5,7 +5,6 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
|
||||||
"slices"
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -69,10 +68,6 @@ func (i *Index) getIndexFilepath() string {
|
|||||||
return filepath.Join(i.path, i.context.IndexFilename)
|
return filepath.Join(i.path, i.context.IndexFilename)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Index) setMod(value bool) {
|
|
||||||
i.modified = value
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Index) logFilePanic(name string, message string) {
|
func (i *Index) logFilePanic(name string, message string) {
|
||||||
i.context.log(STATUS_PANIC, filepath.Join(i.path, name)+": "+message)
|
i.context.log(STATUS_PANIC, filepath.Join(i.path, name)+": "+message)
|
||||||
}
|
}
|
||||||
@ -137,14 +132,14 @@ func (i *Index) checkFix(forceUpdateDmg bool) {
|
|||||||
for name, b := range i.new {
|
for name, b := range i.new {
|
||||||
if a, ok := i.cur[name]; !ok {
|
if a, ok := i.cur[name]; !ok {
|
||||||
i.logFile(STATUS_NEW, name)
|
i.logFile(STATUS_NEW, name)
|
||||||
i.setMod(true)
|
i.modified = true
|
||||||
} else {
|
} else {
|
||||||
amod := int64(a.ModTime)
|
amod := int64(a.ModTime)
|
||||||
bmod := int64(b.ModTime)
|
bmod := int64(b.ModTime)
|
||||||
if a.Hash != nil && b.Hash != nil && *a.Hash == *b.Hash {
|
if a.Hash != nil && b.Hash != nil && *a.Hash == *b.Hash {
|
||||||
i.logFile(STATUS_OK, name)
|
i.logFile(STATUS_OK, name)
|
||||||
if amod != bmod {
|
if amod != bmod {
|
||||||
i.setMod(true)
|
i.modified = true
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -155,37 +150,45 @@ func (i *Index) checkFix(forceUpdateDmg bool) {
|
|||||||
// keep DMG entry
|
// keep DMG entry
|
||||||
i.new[name] = a
|
i.new[name] = a
|
||||||
} else {
|
} else {
|
||||||
i.setMod(true)
|
i.modified = true
|
||||||
}
|
}
|
||||||
} else if amod < bmod {
|
} else if amod < bmod {
|
||||||
i.logFile(STATUS_UPDATE, name)
|
i.logFile(STATUS_UPDATE, name)
|
||||||
i.setMod(true)
|
i.modified = true
|
||||||
} else if amod > bmod {
|
} else if amod > bmod {
|
||||||
i.logFile(STATUS_UP_WARN_OLD, name)
|
i.logFile(STATUS_UP_WARN_OLD, name)
|
||||||
i.setMod(true)
|
i.modified = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if i.context.ShowMissing {
|
// track missing
|
||||||
for name := range i.cur {
|
for name := range i.cur {
|
||||||
if _, ok := i.new[name]; !ok {
|
if _, ok := i.new[name]; !ok {
|
||||||
|
i.modified = true
|
||||||
|
if i.context.ShowMissing {
|
||||||
i.logFile(STATUS_MISSING, name)
|
i.logFile(STATUS_MISSING, name)
|
||||||
i.setMod(true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// dirs
|
|
||||||
m := make(map[string]bool)
|
|
||||||
for _, n := range i.newDirList {
|
|
||||||
m[n] = true
|
|
||||||
}
|
|
||||||
for _, name := range i.curDirList {
|
|
||||||
if !m[name] {
|
|
||||||
i.logDir(STATUS_MISSING, name+"/")
|
|
||||||
i.setMod(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dirs
|
||||||
|
m := make(map[string]bool)
|
||||||
|
for _, n := range i.newDirList {
|
||||||
|
m[n] = true
|
||||||
|
}
|
||||||
|
for _, name := range i.curDirList {
|
||||||
|
if !m[name] {
|
||||||
|
i.modified = true
|
||||||
|
if i.context.ShowMissing {
|
||||||
|
i.logDir(STATUS_MISSING, name+"/")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(i.newDirList) != len(i.curDirList) {
|
||||||
|
// added
|
||||||
|
i.modified = true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Index) calcFile(name string, a string) (*idxInfo, error) {
|
func (i *Index) calcFile(name string, a string) (*idxInfo, error) {
|
||||||
@ -231,7 +234,7 @@ func (i *Index) save() (bool, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
i.setMod(false)
|
i.modified = false
|
||||||
return true, nil
|
return true, nil
|
||||||
} else {
|
} else {
|
||||||
return false, nil
|
return false, nil
|
||||||
@ -241,13 +244,11 @@ func (i *Index) save() (bool, error) {
|
|||||||
func (i *Index) load() error {
|
func (i *Index) load() error {
|
||||||
if _, err := os.Stat(i.getIndexFilepath()); err != nil {
|
if _, err := os.Stat(i.getIndexFilepath()); err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
// todo
|
|
||||||
i.setMod(true)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
i.setMod(false)
|
i.modified = false
|
||||||
file, err := os.ReadFile(i.getIndexFilepath())
|
file, err := os.ReadFile(i.getIndexFilepath())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -269,7 +270,7 @@ func (i *Index) load() error {
|
|||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
if data.IdxHash != hashMd5(text) {
|
if data.IdxHash != hashMd5(text) {
|
||||||
i.setMod(true)
|
i.modified = true
|
||||||
i.logFile(STATUS_ERR_IDX, i.getIndexFilepath())
|
i.logFile(STATUS_ERR_IDX, i.getIndexFilepath())
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -286,12 +287,12 @@ func (i *Index) load() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dirs
|
||||||
if data.Dir != nil {
|
if data.Dir != nil {
|
||||||
slices.Sort(data.Dir)
|
slices.Sort(data.Dir)
|
||||||
i.curDirList = data.Dir
|
i.curDirList = data.Dir
|
||||||
if i.context.TrackDirectories && !reflect.DeepEqual(i.curDirList, i.newDirList) {
|
|
||||||
i.setMod(true)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -115,6 +115,8 @@ func setupMiscFiles() {
|
|||||||
|
|
||||||
genDir(root)
|
genDir(root)
|
||||||
|
|
||||||
|
os.MkdirAll(filepath.Join(root, "day/car/empty"), 0755)
|
||||||
|
|
||||||
rootPeople := filepath.Join(root, "people")
|
rootPeople := filepath.Join(root, "people")
|
||||||
testPeople := filepath.Join(testDir, "people")
|
testPeople := filepath.Join(testDir, "people")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user