Browse Source

cluster: introduce Cluster.ReadLines()

reading a file, splitting and trimming lines, and
allowing # to comment a line out

Signed-off-by: Alejandro Mery <amery@jpi.io>
pull/36/head
Alejandro Mery 8 months ago
parent
commit
fd1c57d377
  1. 27
      pkg/cluster/cluster_file.go

27
pkg/cluster/cluster_file.go

@ -1,10 +1,12 @@
package cluster
import (
"bufio"
"bytes"
"fmt"
"io"
"os"
"strings"
fs "github.com/hack-pad/hackpadfs"
)
@ -65,6 +67,31 @@ func (m *Cluster) ReadFile(name string, args ...any) ([]byte, error) {
return fs.ReadFile(m.dir, name)
}
// ReadLines reads a file from the cluster's config directory,
// split by lines, trimmed, and accepting `#` to comment lines out.
func (m *Cluster) ReadLines(name string, args ...any) ([]string, error) {
var out []string
data, err := m.ReadFile(name, args...)
if err != nil {
return nil, err
}
sc := bufio.NewScanner(bytes.NewReader(data))
for sc.Scan() {
s := strings.TrimSpace(sc.Text())
switch {
case s == "", strings.HasPrefix(s, "#"):
// ignore
default:
// accepted
out = append(out, s)
}
}
return out, nil
}
// WriteStringFile writes the given content to a file on the machine's config directory
func (m *Cluster) WriteStringFile(value string, name string, args ...any) error {
f, err := m.CreateTruncFile(name, args...)

Loading…
Cancel
Save