Add golangci-lint config
This commit is contained in:
@@ -35,7 +35,7 @@ func (f *FS) prepareDirectories() error {
|
||||
|
||||
// Create the structure for the virtual filesystem.
|
||||
for _, dir := range []string{f.destinationDir, f.cacheDir, f.metadataDir} {
|
||||
if err := os.MkdirAll(dir, 0755); err != nil {
|
||||
if err := os.MkdirAll(dir, 0o755); err != nil {
|
||||
f.app.Logger().WithField("path", dir).Error("Operation on directory was unsuccessful")
|
||||
|
||||
return fmt.Errorf("%w: %w (%w)", ErrFilesystem, ErrFailedToCreateDestinationDirectory, err)
|
||||
|
||||
@@ -2,6 +2,7 @@ package filesystem
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
"os"
|
||||
"sync"
|
||||
@@ -33,7 +34,7 @@ func (fi *File) Read(ctx context.Context, dest []byte, off int64) (fuse.ReadResu
|
||||
}
|
||||
|
||||
n, err := fi.file.Read(dest)
|
||||
if err != nil && err != io.EOF {
|
||||
if err != nil && !errors.Is(err, io.EOF) {
|
||||
return nil, syscall.EIO
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ var (
|
||||
func (m *MusicAppMetadataFile) Getattr(ctx context.Context, fh fs.FileHandle, out *fuse.AttrOut) syscall.Errno {
|
||||
info, err := os.Stat(m.path)
|
||||
if err != nil {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = m.StableAttr().Ino
|
||||
out.Size = 0
|
||||
@@ -57,7 +57,7 @@ func (m *MusicAppMetadataFile) Getattr(ctx context.Context, fh fs.FileHandle, ou
|
||||
func (m *MusicAppMetadataFile) Setattr(ctx context.Context, fh fs.FileHandle, in *fuse.SetAttrIn, out *fuse.AttrOut) syscall.Errno {
|
||||
info, err := os.Stat(m.path)
|
||||
if err != nil {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = m.StableAttr().Ino
|
||||
out.Size = 0
|
||||
@@ -90,7 +90,7 @@ func (m *MusicAppMetadataFile) Create(ctx context.Context, name string, flags ui
|
||||
Ino: m.f.nextInode(),
|
||||
})
|
||||
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
out.Size = 0
|
||||
@@ -104,12 +104,12 @@ func (m *MusicAppMetadataFile) Create(ctx context.Context, name string, flags ui
|
||||
|
||||
func (m *MusicAppMetadataFile) Open(ctx context.Context, flags uint32) (fh fs.FileHandle, fuseFlags uint32, errno syscall.Errno) {
|
||||
if _, err := os.Stat(m.path); os.IsNotExist(err) {
|
||||
if err := os.WriteFile(m.path, []byte{}, 0644); err != nil {
|
||||
if err := os.WriteFile(m.path, []byte{}, 0o644); err != nil {
|
||||
return nil, 0, syscall.EIO
|
||||
}
|
||||
}
|
||||
|
||||
file, err := os.OpenFile(m.path, int(flags), 0644)
|
||||
file, err := os.OpenFile(m.path, int(flags), 0o644)
|
||||
if err != nil {
|
||||
return nil, 0, syscall.EIO
|
||||
}
|
||||
@@ -135,6 +135,7 @@ func (m *MusicAppMetadataFile) Unlink(ctx context.Context, name string) syscall.
|
||||
if err := os.Remove(m.path); err != nil {
|
||||
return syscall.ENOENT
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ var (
|
||||
)
|
||||
|
||||
func (d *MusicDir) Getattr(ctx context.Context, f fs.FileHandle, out *fuse.AttrOut) syscall.Errno {
|
||||
out.Mode = fuse.S_IFDIR | 0755
|
||||
out.Mode = fuse.S_IFDIR | 0o755
|
||||
out.Nlink = 2 // Minimum . and ..
|
||||
out.Ino = d.StableAttr().Ino
|
||||
out.Size = 4096
|
||||
@@ -77,6 +77,7 @@ func (d *MusicDir) Getxattr(ctx context.Context, attr string, dest []byte) (uint
|
||||
if len(dest) > 0 {
|
||||
return 0, 0
|
||||
}
|
||||
|
||||
return 0, 0
|
||||
default:
|
||||
return 0, syscall.ENODATA
|
||||
@@ -113,7 +114,7 @@ func (d *MusicDir) Create(ctx context.Context, name string, flags uint32, mode u
|
||||
},
|
||||
)
|
||||
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
out.Size = 0
|
||||
@@ -144,7 +145,7 @@ func (d *MusicDir) Lookup(ctx context.Context, name string, out *fuse.EntryOut)
|
||||
},
|
||||
)
|
||||
|
||||
out.Mode = fuse.S_IFREG | 0444
|
||||
out.Mode = fuse.S_IFREG | 0o444
|
||||
out.Nlink = 1
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
|
||||
@@ -165,6 +166,7 @@ func (d *MusicDir) Lookup(ctx context.Context, name string, out *fuse.EntryOut)
|
||||
|
||||
// Check real file or directory
|
||||
fullPath := filepath.Join(d.path, name)
|
||||
|
||||
info, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
return nil, syscall.ENOENT
|
||||
@@ -179,7 +181,7 @@ func (d *MusicDir) Lookup(ctx context.Context, name string, out *fuse.EntryOut)
|
||||
},
|
||||
)
|
||||
|
||||
out.Mode = fuse.S_IFDIR | 0755
|
||||
out.Mode = fuse.S_IFDIR | 0o755
|
||||
out.Nlink = 2
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
out.Size = 4096
|
||||
@@ -201,9 +203,9 @@ func (d *MusicDir) Lookup(ctx context.Context, name string, out *fuse.EntryOut)
|
||||
)
|
||||
|
||||
if isMeta {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
} else {
|
||||
out.Mode = fuse.S_IFREG | 0444
|
||||
out.Mode = fuse.S_IFREG | 0o444
|
||||
}
|
||||
|
||||
out.Nlink = 1
|
||||
@@ -224,12 +226,12 @@ func (d *MusicDir) Readdir(ctx context.Context) (fs.DirStream, syscall.Errno) {
|
||||
|
||||
dirEntries = append(dirEntries, fuse.DirEntry{
|
||||
Name: ".",
|
||||
Mode: fuse.S_IFDIR | 0755,
|
||||
Mode: fuse.S_IFDIR | 0o755,
|
||||
Ino: d.StableAttr().Ino,
|
||||
})
|
||||
dirEntries = append(dirEntries, fuse.DirEntry{
|
||||
Name: "..",
|
||||
Mode: fuse.S_IFDIR | 0755,
|
||||
Mode: fuse.S_IFDIR | 0o755,
|
||||
Ino: 1, // Parent (root) inode
|
||||
})
|
||||
|
||||
@@ -249,19 +251,19 @@ func (d *MusicDir) Readdir(ctx context.Context) (fs.DirStream, syscall.Errno) {
|
||||
continue
|
||||
}
|
||||
|
||||
mode := fuse.S_IFREG | 0444
|
||||
mode := fuse.S_IFREG | 0o444
|
||||
if entry.IsDir() {
|
||||
mode = fuse.S_IFDIR | 0755
|
||||
mode = fuse.S_IFDIR | 0o755
|
||||
}
|
||||
|
||||
// Convert .flac to .m4a in directory listing
|
||||
if strings.HasSuffix(strings.ToLower(name), ".flac") {
|
||||
name = name[:len(name)-5] + ".m4a"
|
||||
if !d.f.isiTunesMetadata(name) {
|
||||
mode = fuse.S_IFREG | 0644
|
||||
mode = fuse.S_IFREG | 0o644
|
||||
}
|
||||
} else if !d.f.isiTunesMetadata(name) {
|
||||
mode = fuse.S_IFREG | 0644
|
||||
mode = fuse.S_IFREG | 0o644
|
||||
}
|
||||
|
||||
dirEntries = append(dirEntries, fuse.DirEntry{
|
||||
|
||||
@@ -31,7 +31,7 @@ func (f *MusicFile) Getattr(ctx context.Context, fh fs.FileHandle, out *fuse.Att
|
||||
metaPath := filepath.Join(f.f.metadataDir, f.virtualName)
|
||||
|
||||
if info, err := os.Stat(metaPath); err == nil {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = f.StableAttr().Ino
|
||||
out.Size = uint64(info.Size())
|
||||
@@ -40,7 +40,7 @@ func (f *MusicFile) Getattr(ctx context.Context, fh fs.FileHandle, out *fuse.Att
|
||||
out.Ctime = out.Mtime
|
||||
out.Blocks = (out.Size + 511) / 512
|
||||
} else {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = f.StableAttr().Ino
|
||||
out.Size = 0
|
||||
@@ -53,7 +53,7 @@ func (f *MusicFile) Getattr(ctx context.Context, fh fs.FileHandle, out *fuse.Att
|
||||
return 0
|
||||
}
|
||||
|
||||
out.Mode = fuse.S_IFREG | 0444
|
||||
out.Mode = fuse.S_IFREG | 0o444
|
||||
out.Nlink = 1
|
||||
out.Ino = f.StableAttr().Ino
|
||||
out.Blocks = 1
|
||||
@@ -76,7 +76,7 @@ func (f *MusicFile) Setattr(ctx context.Context, fh fs.FileHandle, in *fuse.SetA
|
||||
if f.isMetaFile {
|
||||
metaPath := filepath.Join(f.f.metadataDir, f.virtualName)
|
||||
if info, err := os.Stat(metaPath); err == nil {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = f.StableAttr().Ino
|
||||
out.Size = uint64(info.Size())
|
||||
@@ -85,7 +85,7 @@ func (f *MusicFile) Setattr(ctx context.Context, fh fs.FileHandle, in *fuse.SetA
|
||||
out.Ctime = out.Mtime
|
||||
out.Blocks = (out.Size + 511) / 512
|
||||
} else {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = f.StableAttr().Ino
|
||||
out.Size = 0
|
||||
@@ -105,10 +105,11 @@ func (f *MusicFile) Open(ctx context.Context, flags uint32) (fh fs.FileHandle, f
|
||||
if f.isMetaFile {
|
||||
metaPath := filepath.Join(f.f.metadataDir, f.virtualName)
|
||||
|
||||
file, err := os.OpenFile(metaPath, int(flags), 0644)
|
||||
file, err := os.OpenFile(metaPath, int(flags), 0o644)
|
||||
if err != nil && os.IsNotExist(err) {
|
||||
file, err = os.Create(metaPath)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, 0, syscall.EIO
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ func (r *RootDirectory) Create(
|
||||
},
|
||||
)
|
||||
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
out.Size = 0
|
||||
@@ -77,7 +77,7 @@ func (r *RootDirectory) Lookup(ctx context.Context, name string, out *fuse.Entry
|
||||
},
|
||||
)
|
||||
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
out.Nlink = 1
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
|
||||
@@ -114,7 +114,7 @@ func (r *RootDirectory) Lookup(ctx context.Context, name string, out *fuse.Entry
|
||||
},
|
||||
)
|
||||
|
||||
out.Mode = fuse.S_IFREG | 0444
|
||||
out.Mode = fuse.S_IFREG | 0o444
|
||||
out.Nlink = 1
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
|
||||
@@ -135,6 +135,7 @@ func (r *RootDirectory) Lookup(ctx context.Context, name string, out *fuse.Entry
|
||||
|
||||
// Check real file or directory
|
||||
fullPath := filepath.Join(r.f.sourceDir, name)
|
||||
|
||||
info, err := os.Stat(fullPath)
|
||||
if err != nil {
|
||||
return nil, syscall.ENOENT
|
||||
@@ -146,7 +147,7 @@ func (r *RootDirectory) Lookup(ctx context.Context, name string, out *fuse.Entry
|
||||
Ino: r.f.nextInode(),
|
||||
})
|
||||
|
||||
out.Mode = fuse.S_IFDIR | 0755
|
||||
out.Mode = fuse.S_IFDIR | 0o755
|
||||
out.Nlink = 2 // Minimum . and ..
|
||||
out.Ino = ch.StableAttr().Ino
|
||||
out.Size = 4096
|
||||
@@ -166,9 +167,9 @@ func (r *RootDirectory) Lookup(ctx context.Context, name string, out *fuse.Entry
|
||||
})
|
||||
|
||||
if isMeta {
|
||||
out.Mode = fuse.S_IFREG | 0644
|
||||
out.Mode = fuse.S_IFREG | 0o644
|
||||
} else {
|
||||
out.Mode = fuse.S_IFREG | 0444
|
||||
out.Mode = fuse.S_IFREG | 0o444
|
||||
}
|
||||
|
||||
out.Nlink = 1
|
||||
@@ -190,12 +191,12 @@ func (r *RootDirectory) Readdir(ctx context.Context) (fs.DirStream, syscall.Errn
|
||||
// Always include . and .. first
|
||||
dirEntries = append(dirEntries, fuse.DirEntry{
|
||||
Name: ".",
|
||||
Mode: fuse.S_IFDIR | 0755,
|
||||
Mode: fuse.S_IFDIR | 0o755,
|
||||
Ino: 1, // Root inode
|
||||
})
|
||||
dirEntries = append(dirEntries, fuse.DirEntry{
|
||||
Name: "..",
|
||||
Mode: fuse.S_IFDIR | 0755,
|
||||
Mode: fuse.S_IFDIR | 0o755,
|
||||
Ino: 1,
|
||||
})
|
||||
|
||||
@@ -205,6 +206,7 @@ func (r *RootDirectory) Readdir(ctx context.Context) (fs.DirStream, syscall.Errn
|
||||
r.f.app.Logger().WithError(err).WithField("path", r.f.sourceDir).Error(
|
||||
"Error reading directory",
|
||||
)
|
||||
|
||||
return fs.NewListDirStream(dirEntries), 0
|
||||
}
|
||||
|
||||
@@ -215,9 +217,9 @@ func (r *RootDirectory) Readdir(ctx context.Context) (fs.DirStream, syscall.Errn
|
||||
continue
|
||||
}
|
||||
|
||||
mode := fuse.S_IFREG | 0444
|
||||
mode := fuse.S_IFREG | 0o444
|
||||
if entry.IsDir() {
|
||||
mode = fuse.S_IFDIR | 0755
|
||||
mode = fuse.S_IFDIR | 0o755
|
||||
}
|
||||
|
||||
// Convert .flac to .m4a in directory listing
|
||||
@@ -225,7 +227,7 @@ func (r *RootDirectory) Readdir(ctx context.Context) (fs.DirStream, syscall.Errn
|
||||
name = name[:len(name)-5] + ".m4a"
|
||||
}
|
||||
|
||||
mode = fuse.S_IFREG | 0644
|
||||
mode = fuse.S_IFREG | 0o644
|
||||
|
||||
dirEntries = append(dirEntries, fuse.DirEntry{
|
||||
Name: name,
|
||||
@@ -246,7 +248,7 @@ func (r *RootDirectory) Getattr(
|
||||
ctx context.Context, f fs.FileHandle, out *fuse.AttrOut,
|
||||
) syscall.Errno {
|
||||
// Set basic directory attributes
|
||||
out.Mode = fuse.S_IFDIR | 0755
|
||||
out.Mode = fuse.S_IFDIR | 0o755
|
||||
|
||||
// Set nlink to at least 2 (for . and ..)
|
||||
out.Nlink = 2
|
||||
|
||||
Reference in New Issue
Block a user