diff --git a/internal/networkd/apply.go b/internal/networkd/apply.go new file mode 100644 index 0000000..0b83b59 --- /dev/null +++ b/internal/networkd/apply.go @@ -0,0 +1,33 @@ +package networkd + +import ( + "fmt" + "os" + + "nfsense.net/nfsense/internal/definitions" +) + +func ApplyNetworkdConfiguration(currentConfig definitions.Config, pendingConfig definitions.Config) error { + files, err := GenerateNetworkdConfiguration(pendingConfig) + if err != nil { + return fmt.Errorf("Generating Networkd Configuration: %w", err) + } + + for _, file := range files { + f, err := os.Create("out/" + file.Name) + if err != nil { + return fmt.Errorf("creating File: %w", err) + } + + _, err = f.WriteString(file.Content + "\n") + if err != nil { + return fmt.Errorf("writing File: %w", err) + } + + err = f.Sync() + if err != nil { + return fmt.Errorf("syncing File: %w", err) + } + } + return nil +}