Skip to content

Commit 7be2cf6

Browse files
authored
Merge pull request #133 from l27001/manual_fix
Bugfix: Copy manual*.conf to cache dir
2 parents 13d6a96 + afb7b83 commit 7be2cf6

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

pkg/process/process.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,9 +635,19 @@ func Run(configFilename, lockFile, version string, noConfigure, dryRun, withdraw
635635
}
636636
log.Debug("Finished writing global config file")
637637

638+
// Remove old manual configs
639+
if err := util.RemoveFileGlob(path.Join(c.CacheDirectory, "manual*.conf")); err != nil {
640+
log.Fatalf("Removing old manual config files: %v", err)
641+
}
642+
643+
// Copying manual configs
644+
if err := util.CopyFileGlob(path.Join(c.BIRDDirectory, "manual*.conf"), c.CacheDirectory); err != nil {
645+
log.Fatalf("Copying manual config files: %v", err)
646+
}
647+
638648
// Remove old peer-specific configs
639649
if err := util.RemoveFileGlob(path.Join(c.CacheDirectory, "AS*.conf")); err != nil {
640-
log.Fatalf("Removing old config files: %v", err)
650+
log.Fatalf("Removing old peer config files: %v", err)
641651
}
642652

643653
// Print global config

pkg/util/util.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,54 @@ func StrDeref(s *string) string {
142142
func Ptr[T any](a T) *T {
143143
return &a
144144
}
145+
146+
// CopyFile copies a file from a source to destination
147+
func CopyFile(source, destination_dir string) (err error) {
148+
_, destination := filepath.Split(source)
149+
destination = filepath.Join(destination_dir, destination)
150+
src, err := os.Open(source)
151+
if err != nil {
152+
return err
153+
}
154+
defer src.Close()
155+
fi, err := src.Stat()
156+
if err != nil {
157+
return err
158+
}
159+
flag := os.O_WRONLY | os.O_CREATE | os.O_TRUNC
160+
perm := fi.Mode() & os.ModePerm
161+
dst, err := os.OpenFile(destination, flag, perm)
162+
if err != nil {
163+
return err
164+
}
165+
defer dst.Close()
166+
_, err = io.Copy(dst, src)
167+
if err != nil {
168+
dst.Close()
169+
os.Remove(destination)
170+
return err
171+
}
172+
err = dst.Close()
173+
if err != nil {
174+
return err
175+
}
176+
err = src.Close()
177+
if err != nil {
178+
return err
179+
}
180+
return nil
181+
}
182+
183+
// CopyFileGlob copies files by glob
184+
func CopyFileGlob(glob, destination_dir string) error {
185+
files, err := filepath.Glob(glob)
186+
if err != nil {
187+
log.Fatal(err)
188+
}
189+
for _, f := range files {
190+
if err := CopyFile(f, destination_dir); err != nil {
191+
return err
192+
}
193+
}
194+
return nil
195+
}

0 commit comments

Comments
 (0)