From 5e1089973e5f12cdfe35156e8bf483d9aac5b2cd Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 6 Feb 2024 01:39:44 -0500 Subject: [PATCH] refactor: use type-specific functions for writing contents to a file --- plugins/common/io.go | 47 +++++++++++++++++++++++++--- plugins/logs/functions.go | 4 +-- plugins/scheduler-k3s/functions.go | 4 +-- plugins/scheduler-k3s/subcommands.go | 4 +-- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/plugins/common/io.go b/plugins/common/io.go index 4df5e9aa9..b39d24dba 100644 --- a/plugins/common/io.go +++ b/plugins/common/io.go @@ -213,6 +213,7 @@ func TouchFile(filename string) error { }) } +// WriteSliceToFile writes a slice of strings to a file type WriteSliceToFileInput struct { Filename string GroupName string @@ -223,17 +224,53 @@ type WriteSliceToFileInput struct { // WriteSliceToFile writes a slice of strings to a file func WriteSliceToFile(input WriteSliceToFileInput) error { + return WriteBytesToFile(WriteBytesToFileInput{ + Bytes: []byte(strings.TrimSuffix(strings.Join(input.Lines, "\n"), "\n") + "\n"), + Filename: input.Filename, + GroupName: input.GroupName, + Mode: input.Mode, + Username: input.Username, + }) +} + +// WriteStringToFile writes a string to a file +type WriteStringToFileInput struct { + Content string + Filename string + GroupName string + Mode os.FileMode + Username string +} + +// WriteStringToFile writes a string to a file +func WriteStringToFile(input WriteStringToFileInput) error { + return WriteBytesToFile(WriteBytesToFileInput{ + Bytes: []byte(input.Content), + Filename: input.Filename, + GroupName: input.GroupName, + Mode: input.Mode, + Username: input.Username, + }) +} + +// WriteBytesToFileInput writes a byte array to a file +type WriteBytesToFileInput struct { + Bytes []byte + Filename string + GroupName string + Mode os.FileMode + Username string +} + +// WriteBytesToFile writes a byte array to a file +func WriteBytesToFile(input WriteBytesToFileInput) error { file, err := os.OpenFile(input.Filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, input.Mode) if err != nil { return err } defer file.Close() - w := bufio.NewWriter(file) - for _, line := range input.Lines { - fmt.Fprintln(w, line) - } - if err = w.Flush(); err != nil { + if _, err := file.Write(input.Bytes); err != nil { return err } diff --git a/plugins/logs/functions.go b/plugins/logs/functions.go index 4ee8ad1a8..9d55c3374 100644 --- a/plugins/logs/functions.go +++ b/plugins/logs/functions.go @@ -295,9 +295,9 @@ func writeVectorConfig() error { b = bytes.Replace(b, []byte("\\u002B"), []byte("+"), -1) vectorConfig := filepath.Join(common.GetDataDirectory("logs"), "vector.json") - if err := common.WriteSliceToFile(common.WriteSliceToFileInput{ + if err := common.WriteBytesToFile(common.WriteBytesToFileInput{ + Bytes: b, Filename: vectorConfig, - Lines: []string{string(b)}, Mode: os.FileMode(0600), }); err != nil { return err diff --git a/plugins/scheduler-k3s/functions.go b/plugins/scheduler-k3s/functions.go index 2deb4aa4a..5499615dd 100644 --- a/plugins/scheduler-k3s/functions.go +++ b/plugins/scheduler-k3s/functions.go @@ -755,10 +755,10 @@ func installHelperCommands(ctx context.Context) error { return fmt.Errorf("Unable to close %s file: %w", binaryName, err) } - err = common.WriteSliceToFile(common.WriteSliceToFileInput{ + err = common.WriteStringToFile(common.WriteStringToFileInput{ + Content: resp.String(), Filename: f.Name(), GroupName: "root", - Lines: strings.Split(resp.String(), "\n"), Mode: os.FileMode(0755), Username: "root", }) diff --git a/plugins/scheduler-k3s/subcommands.go b/plugins/scheduler-k3s/subcommands.go index a2d692f21..dd43dc299 100644 --- a/plugins/scheduler-k3s/subcommands.go +++ b/plugins/scheduler-k3s/subcommands.go @@ -107,9 +107,9 @@ func CommandInitialize(serverIP string, taintScheduling bool) error { return fmt.Errorf("Unable to close k3s installer file: %w", err) } - err = common.WriteSliceToFile(common.WriteSliceToFileInput{ + err = common.WriteStringToFile(common.WriteStringToFileInput{ + Content: resp.String(), Filename: f.Name(), - Lines: strings.Split(resp.String(), "\n"), Mode: os.FileMode(0755), }) if err != nil {