check / check (push) Canceled after 0s
`go install sneak.berlin/go/sfdupes/cmd/sfdupes@...` found no package: the command was built from `package main` in the repository root. It now lives in `cmd/sfdupes/main.go`, whose one call is `sfdupes.Main()`, and every other Go file moved with `git mv` to `internal/sfdupes`, as `REPO_POLICIES.md` and the Go style guide require. The `Makefile` builds `./cmd/sfdupes` and sets `Version` by its new import path. README "Install" and `TODO.md` give the new paths; the fleet-written "flat layout" divergence is gone. Rule suppressed: each test file carries `//nolint:testpackage`, since the tests call unexported functions throughout. Model: opus-5-5
37 lines
793 B
Go
37 lines
793 B
Go
//go:build !darwin
|
|
|
|
package sfdupes
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"runtime"
|
|
)
|
|
|
|
// mountInfoPath is the file in which Linux lists the mounts the reading
|
|
// process sees.
|
|
const mountInfoPath = "/proc/self/mountinfo"
|
|
|
|
// nonPersistentFilesystems returns the device ID of every mounted
|
|
// filesystem that is not persistent, with its type: on Linux read from
|
|
// mountInfoPath (see readMountInfo), and on any other system none.
|
|
func nonPersistentFilesystems() (map[uint64]string, error) {
|
|
if runtime.GOOS != goosLinux {
|
|
return map[uint64]string{}, nil
|
|
}
|
|
|
|
f, err := os.Open(mountInfoPath)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
defer func() { _ = f.Close() }()
|
|
|
|
devices, err := readMountInfo(f)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("read %s: %w", mountInfoPath, err)
|
|
}
|
|
|
|
return devices, nil
|
|
}
|