diff --git a/pkg/zones/machine.go b/pkg/zones/machine.go index ca863e3..752e6ad 100644 --- a/pkg/zones/machine.go +++ b/pkg/zones/machine.go @@ -1,7 +1,10 @@ package zones import ( + "fmt" + "io/fs" "net/netip" + "path/filepath" "strconv" "strings" "sync" @@ -56,3 +59,25 @@ func (m *Machine) FullName() string { return m.Name } + +// ReadFile reads a file from the machine's config directory +func (m *Machine) ReadFile(name string, args ...any) ([]byte, error) { + base := m.zone.zones.dir + fullName := m.getFilename(name, args...) + + return fs.ReadFile(base, fullName) +} + +func (m *Machine) getFilename(name string, args ...any) string { + if len(args) > 0 { + name = fmt.Sprintf(name, args...) + } + + s := []string{ + m.zone.Name, + m.Name, + name, + } + + return filepath.Join(s...) +}