refactor: use type-specific functions for writing contents to a file

This commit is contained in:
Jose Diaz-Gonzalez
2024-02-06 01:39:44 -05:00
parent 666f953715
commit 5e1089973e
4 changed files with 48 additions and 11 deletions

View File

@@ -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
}

View File

@@ -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

View File

@@ -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",
})

View File

@@ -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 {