diff options
Diffstat (limited to 'internal/app/dispatcher.go')
| -rw-r--r-- | internal/app/dispatcher.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/internal/app/dispatcher.go b/internal/app/dispatcher.go index 8ab60734..075b2add 100644 --- a/internal/app/dispatcher.go +++ b/internal/app/dispatcher.go @@ -1,6 +1,8 @@ package app import ( + "io" + "io/fs" "log" "os" "os/exec" @@ -11,6 +13,13 @@ import ( "hakurei.app/internal" ) +// osFile represents [os.File]. +type osFile interface { + Name() string + io.Writer + fs.File +} + // syscallDispatcher provides methods that make state-dependent system calls as part of their behaviour. type syscallDispatcher interface { // new starts a goroutine with a new instance of syscallDispatcher. @@ -26,6 +35,8 @@ type syscallDispatcher interface { lookupEnv(key string) (string, bool) // stat provides [os.Stat]. stat(name string) (os.FileInfo, error) + // open provides [os.Open]. + open(name string) (osFile, error) // readdir provides [os.ReadDir]. readdir(name string) ([]os.DirEntry, error) // tempdir provides [os.TempDir]. @@ -64,6 +75,7 @@ func (direct) getuid() int { return os.Getuid() } func (direct) getgid() int { return os.Getgid() } func (direct) lookupEnv(key string) (string, bool) { return os.LookupEnv(key) } func (direct) stat(name string) (os.FileInfo, error) { return os.Stat(name) } +func (direct) open(name string) (osFile, error) { return os.Open(name) } func (direct) readdir(name string) ([]os.DirEntry, error) { return os.ReadDir(name) } func (direct) tempdir() string { return os.TempDir() } |
