本文整理汇总了Golang中tmsu/log.Infof函数的典型用法代码示例。如果您正苦于以下问题:Golang Infof函数的具体用法?Golang Infof怎么用?Golang Infof使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Infof函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Unlink
func (vfs FuseVfs) Unlink(name string, context *fuse.Context) fuse.Status {
log.Infof("BEGIN Unlink(%v)", name)
defer log.Infof("END Unlink(%v)", name)
fileId, err := vfs.parseFileId(name)
if err != nil {
log.Fatal("Could not unlink: ", err)
}
if fileId == 0 {
// cannot unlink tag directories
return fuse.EPERM
}
path := vfs.splitPath(name)
tagNames := path[1 : len(path)-1]
for _, tagName := range tagNames {
tag, err := vfs.store.Db.TagByName(tagName)
if err != nil {
log.Fatal(err)
}
if tag == nil {
log.Fatalf("Could not retrieve tag '%v'.", tagName)
}
err = vfs.store.RemoveFileTag(fileId, tag.Id)
if err != nil {
log.Fatal(err)
}
}
return fuse.OK
}
示例2: openTaggedEntryDir
func (vfs FuseVfs) openTaggedEntryDir(path []string) ([]fuse.DirEntry, fuse.Status) {
log.Infof("BEGIN openTaggedEntryDir(%v)", path)
defer log.Infof("END openTaggedEntryDir(%v)", path)
tagIds, err := vfs.tagNamesToIds(path)
if err != nil {
log.Fatalf("Could not lookup tag IDs: %v.", err)
}
if tagIds == nil {
return nil, fuse.ENOENT
}
furtherTagIds, err := vfs.store.TagsForTags(tagIds)
if err != nil {
log.Fatalf("Could not retrieve tags for tags: %v", err)
}
files, err := vfs.store.FilesWithTags(tagIds, []uint{})
if err != nil {
log.Fatalf("Could not retrieve tagged files: %v", err)
}
entries := make([]fuse.DirEntry, 0, len(files)+len(furtherTagIds))
for _, tag := range furtherTagIds {
entries = append(entries, fuse.DirEntry{Name: tag.Name, Mode: fuse.S_IFDIR | 0755})
}
for _, file := range files {
linkName := vfs.getLinkName(file)
entries = append(entries, fuse.DirEntry{Name: linkName, Mode: fuse.S_IFLNK})
}
return entries, fuse.OK
}
示例3: topDirectories
func (vfs FuseVfs) topDirectories() ([]fuse.DirEntry, fuse.Status) {
log.Infof("BEGIN topDirectories")
defer log.Infof("END topDirectories")
entries := make([]fuse.DirEntry, 0, 1)
entries = append(entries, fuse.DirEntry{Name: "tags", Mode: fuse.S_IFDIR})
return entries, fuse.OK
}
示例4: getTaggedEntryAttr
func (vfs FuseVfs) getTaggedEntryAttr(path []string) (*fuse.Attr, fuse.Status) {
log.Infof("BEGIN getTaggedEntryAttr(%v)", path)
defer log.Infof("END getTaggedEntryAttr(%v)", path)
pathLength := len(path)
name := path[pathLength-1]
fileId, err := vfs.parseFileId(name)
if err != nil {
return nil, fuse.ENOENT
}
if fileId == 0 {
// tag directory
tagIds, err := vfs.tagNamesToIds(path)
if err != nil {
log.Fatalf("Could not lookup tag IDs: %v.", err)
}
if tagIds == nil {
return nil, fuse.ENOENT
}
//TODO slow
// fileCount, err := vfs.store.FileCountWithTags(tagIds)
// if err != nil {
// log.Fatalf("Could not retrieve count of files with tags: %v. (%v)", path, err)
// }
fileCount := 0
now := time.Now()
return &fuse.Attr{Mode: fuse.S_IFDIR | 0755, Nlink: 2, Size: uint64(fileCount), Mtime: uint64(now.Unix()), Mtimensec: uint32(now.Nanosecond())}, fuse.OK
}
file, err := vfs.store.File(fileId)
if err != nil {
log.Fatalf("Could not retrieve file #%v: %v", fileId, err)
}
if file == nil {
return &fuse.Attr{Mode: fuse.S_IFREG}, fuse.ENOENT
}
fileInfo, err := os.Stat(file.Path())
var size int64
var modTime time.Time
if err == nil {
size = fileInfo.Size()
modTime = fileInfo.ModTime()
} else {
size = 0
modTime = time.Time{}
}
return &fuse.Attr{Mode: fuse.S_IFLNK | 0755, Size: uint64(size), Mtime: uint64(modTime.Unix()), Mtimensec: uint32(modTime.Nanosecond())}, fuse.OK
}
示例5: getTagsAttr
func (vfs FuseVfs) getTagsAttr() (*fuse.Attr, fuse.Status) {
log.Infof("BEGIN getTagsAttr")
defer log.Infof("END getTagsAttr")
tagCount, err := vfs.store.Db.TagCount()
if err != nil {
log.Fatalf("Could not get tag count: %v", err)
}
now := time.Now()
return &fuse.Attr{Mode: fuse.S_IFDIR | 0755, Nlink: 2, Size: uint64(tagCount), Mtime: uint64(now.Unix()), Mtimensec: uint32(now.Nanosecond())}, fuse.OK
}
示例6: untagPath
func (command UntagCommand) untagPath(store *storage.Storage, path string, tagIds []uint) error {
absPath, err := filepath.Abs(path)
if err != nil {
return fmt.Errorf("%v: could not get absolute path: %v", path, err)
}
file, err := store.FileByPath(absPath)
if err != nil {
return fmt.Errorf("%v: could not retrieve file: %v", path, err)
}
if file == nil {
return fmt.Errorf("%v: file is not tagged.", path)
}
for _, tagId := range tagIds {
if command.verbose {
log.Infof("%v: unapplying tag #%v.", file.Path(), tagId)
}
if err := store.RemoveFileTag(file.Id, tagId); err != nil {
return fmt.Errorf("%v: could not remove tag #%v: %v", file.Path(), tagId, err)
}
}
if err := command.removeUntaggedFile(store, file); err != nil {
return err
}
if command.recursive {
childFiles, err := store.FilesByDirectory(file.Path())
if err != nil {
return fmt.Errorf("%v: could not retrieve files for directory: %v", file.Path())
}
for _, childFile := range childFiles {
for _, tagId := range tagIds {
if command.verbose {
log.Infof("%v: unapplying tag #%v.", childFile.Path(), tagId)
}
if err := store.RemoveFileTag(childFile.Id, tagId); err != nil {
return fmt.Errorf("%v: could not remove tag #%v: %v", childFile.Path(), tagId, err)
}
}
if err := command.removeUntaggedFile(store, childFile); err != nil {
return err
}
}
}
return nil
}
示例7: Readlink
func (vfs FuseVfs) Readlink(name string, context *fuse.Context) (string, fuse.Status) {
log.Infof("BEGIN Readlink(%v)", name)
defer log.Infof("END Readlink(%v)", name)
path := vfs.splitPath(name)
switch path[0] {
case "tags":
return vfs.readTaggedEntryLink(path[1:])
}
return "", fuse.ENOENT
}
示例8: repairModified
func (command RepairCommand) repairModified(store *storage.Storage, modified fileIdAndInfoMap) error {
if command.verbose {
log.Info("repairing modified files")
}
for path, fileIdAndStat := range modified {
fileId := fileIdAndStat.fileId
stat := fileIdAndStat.stat
log.Infof("%v: modified", path)
fingerprint, err := fingerprint.Create(path)
if err != nil {
return fmt.Errorf("%v: could not create fingerprint: %v", path, err)
}
if !command.pretend {
_, err := store.UpdateFile(fileId, path, fingerprint, stat.ModTime(), stat.Size(), stat.IsDir())
if err != nil {
return fmt.Errorf("%v: could not update file in database: %v", path, err)
}
}
}
return nil
}
示例9: findDuplicatesInDb
func (command DupesCommand) findDuplicatesInDb() error {
store, err := storage.Open()
if err != nil {
return fmt.Errorf("could not open storage: %v", err)
}
defer store.Close()
if command.verbose {
log.Info("identifying duplicate files.")
}
fileSets, err := store.DuplicateFiles()
if err != nil {
return fmt.Errorf("could not identify duplicate files: %v", err)
}
if command.verbose {
log.Infof("found %v sets of duplicate files.", len(fileSets))
}
for index, fileSet := range fileSets {
if index > 0 {
log.Print()
}
log.Printf("Set of %v duplicates:", len(fileSet))
for _, file := range fileSet {
relPath := _path.Rel(file.Path())
log.Printf(" %v", relPath)
}
}
return nil
}
示例10: tagDirectories
func (vfs FuseVfs) tagDirectories() ([]fuse.DirEntry, fuse.Status) {
log.Infof("BEGIN tagDirectories")
defer log.Infof("END tagDirectories")
tags, err := vfs.store.Db.Tags()
if err != nil {
log.Fatalf("Could not retrieve tags: %v", err)
}
entries := make([]fuse.DirEntry, len(tags))
for index, tag := range tags {
entries[index] = fuse.DirEntry{Name: tag.Name, Mode: fuse.S_IFDIR}
}
return entries, fuse.OK
}
示例11: listTagsForPath
func (command TagsCommand) listTagsForPath(store *storage.Storage, path string) error {
if command.verbose {
log.Infof("%v: retrieving tags.", path)
}
var tags, err = store.TagsForPath(path)
if err != nil {
return fmt.Errorf("%v: could not retrieve tags: %v", path, err)
}
if len(tags) == 0 {
_, err := os.Stat(path)
if err != nil {
switch {
case os.IsPermission(err):
log.Warnf("%v: permission denied", path)
case os.IsNotExist(err):
return fmt.Errorf("%v: file not found", path)
default:
return fmt.Errorf("%v: could not stat file: %v", path, err)
}
}
}
if command.count {
log.Print(len(tags))
} else {
for _, tag := range tags {
log.Print(tag.Name)
}
}
return nil
}
示例12: deleteImplication
func (command ImplyCommand) deleteImplication(store *storage.Storage, tagName, impliedTagName string) error {
tag, err := store.Db.TagByName(tagName)
if err != nil {
return fmt.Errorf("could not retrieve tag '%v': %v", tagName, err)
}
if tag == nil {
return fmt.Errorf("no such tag '%v'.", tagName)
}
impliedTag, err := store.Db.TagByName(impliedTagName)
if err != nil {
return fmt.Errorf("could not retrieve tag '%v': %v", impliedTagName, err)
}
if impliedTag == nil {
return fmt.Errorf("no such tag '%v'.", impliedTagName)
}
if command.verbose {
log.Infof("removing tag implication of '%v' to '%v'.", tagName, impliedTagName)
}
if err = store.RemoveImplication(tag.Id, impliedTag.Id); err != nil {
return fmt.Errorf("could not add delete tag implication of '%v' to '%v': %v", tagName, impliedTagName, err)
}
return nil
}
示例13: unmount
func (command UnmountCommand) unmount(path string) error {
if command.verbose {
log.Info("searching path for fusermount.")
}
fusermountPath, err := exec.LookPath("fusermount")
if err != nil {
return fmt.Errorf("could not find 'fusermount': ensure fuse is installed: %v", err)
}
if command.verbose {
log.Infof("running: %v -u %v.", fusermountPath, path)
}
process, err := os.StartProcess(fusermountPath, []string{fusermountPath, "-u", path}, &os.ProcAttr{})
if err != nil {
return fmt.Errorf("could not start 'fusermount': %v", err)
}
if command.verbose {
log.Info("waiting for process to exit.")
}
processState, err := process.Wait()
if err != nil {
return fmt.Errorf("error waiting for process to exit: %v", err)
}
if !processState.Success() {
return fmt.Errorf("could not unmount virtual filesystem.")
}
return nil
}
示例14: findDuplicatesOf
func (command DupesCommand) findDuplicatesOf(paths []string) error {
store, err := storage.Open()
if err != nil {
return fmt.Errorf("could not open storage: %v", err)
}
defer store.Close()
first := true
for _, path := range paths {
if command.verbose {
log.Infof("%v: identifying duplicate files.\n", path)
}
fp, err := fingerprint.Create(path)
if err != nil {
return fmt.Errorf("%v: could not create fingerprint: %v", path, err)
}
if fp == fingerprint.Fingerprint("") {
return nil
}
files, err := store.FilesByFingerprint(fp)
if err != nil {
return fmt.Errorf("%v: could not retrieve files matching fingerprint '%v': %v", path, fp, err)
}
absPath, err := filepath.Abs(path)
if err != nil {
return fmt.Errorf("%v: could not determine absolute path: %v", path, err)
}
// filter out the file we're searching on
dupes := files.Where(func(file *database.File) bool { return file.Path() != absPath })
if len(paths) > 1 && len(dupes) > 0 {
if first {
first = false
} else {
log.Print()
}
log.Printf("%v duplicates of %v:", len(dupes), path)
for _, dupe := range dupes {
relPath := _path.Rel(dupe.Path())
log.Printf(" %v", relPath)
}
} else {
for _, dupe := range dupes {
relPath := _path.Rel(dupe.Path())
log.Print(relPath)
}
}
}
return nil
}
示例15: repairMoved
func (command RepairCommand) repairMoved(store *storage.Storage, missing databaseFileMap, untagged fileInfoMap) error {
if command.verbose {
log.Info("repairing moved files")
}
moved := make([]string, 0, 10)
for path, dbFile := range missing {
if command.verbose {
log.Infof("%v: searching for new location", path)
}
for candidatePath, stat := range untagged {
if stat.Size() == dbFile.Size {
fingerprint, err := fingerprint.Create(candidatePath)
if err != nil {
return fmt.Errorf("%v: could not create fingerprint: %v", path, err)
}
if fingerprint == dbFile.Fingerprint {
log.Infof("%v: moved to %v", path, candidatePath)
moved = append(moved, path)
if !command.pretend {
_, err := store.UpdateFile(dbFile.Id, candidatePath, dbFile.Fingerprint, stat.ModTime(), dbFile.Size, dbFile.IsDir)
if err != nil {
return fmt.Errorf("%v: could not update file in database: %v", path, err)
}
}
delete(untagged, candidatePath)
break
}
}
}
}
for _, path := range moved {
delete(missing, path)
}
return nil
}