MCPcopy Create free account
hub / github.com/cloudnative-pg/cloudnative-pg / EnsureIncludes

Function EnsureIncludes

pkg/configfile/configfile.go:168–203  ·  view source on GitHub ↗

EnsureIncludes makes sure the passed PostgreSQL configuration file has an include directive to every filesToInclude.

(fileName string, filesToInclude ...string)

Source from the content-addressed store, hash-verified

166// EnsureIncludes makes sure the passed PostgreSQL configuration file has an include directive
167// to every filesToInclude.
168func EnsureIncludes(fileName string, filesToInclude ...string) (changed bool, err error) {
169 includeLinesToAdd := make(map[string]string, len(filesToInclude))
170 for _, fileToInclude := range filesToInclude {
171 includeLinesToAdd[fileToInclude] = fmt.Sprintf("include '%v'", fileToInclude)
172 }
173
174 lines, err := fileutils.ReadFileLines(fileName)
175 if err != nil {
176 return false, fmt.Errorf("error while reading lines of %v: %w", fileName, err)
177 }
178
179 for _, line := range lines {
180 trimLine := strings.TrimSpace(line)
181 for targetFile, includeLine := range includeLinesToAdd {
182 if trimLine == includeLine {
183 delete(includeLinesToAdd, targetFile)
184 }
185 }
186 }
187
188 if len(includeLinesToAdd) == 0 {
189 return false, nil
190 }
191
192 for _, fileToInclude := range filesToInclude {
193 if includeLine, present := includeLinesToAdd[fileToInclude]; present {
194 lines = append(lines,
195 "",
196 fmt.Sprintf("# load CloudNativePG %s configuration", fileToInclude),
197 includeLine,
198 )
199 }
200 }
201
202 return fileutils.WriteLinesToFile(fileName, lines)
203}

Callers 4

CreateDataDirectoryMethod · 0.92
configfile_test.goFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected