feat: enhance evobgp with new command-line tools for bundle management, including pull, verify, and apply functionalities. Update go.mod to include necessary dependencies and complete todos in architecture plan for improved observability and deployment practices.
CI / changes (push) Successful in 4s
CI / go (push) Failing after 6s
CI / bird2 (push) Has been skipped
CI / openapi (push) Has been skipped

This commit is contained in:
Denozordec
2026-04-05 14:07:45 +07:00
parent 272542b92a
commit bf52b21150
131 changed files with 9222 additions and 17 deletions
+65 -1
View File
@@ -1,3 +1,67 @@
package main
func main() {}
import (
"context"
"flag"
"fmt"
"os"
"time"
"evobgp/internal/birdfmt"
)
func main() {
bird := flag.String("bird", "", "path to bird binary (default: bird from PATH)")
birdc := flag.String("birdc", "", "path to birdc binary (default: birdc from PATH)")
socket := flag.String("socket", "", "optional birdc control socket (-s)")
timeout := flag.Duration("timeout", 30*time.Second, "timeout for bird/birdc")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: %s [flags] <command>\n", os.Args[0])
fmt.Fprintf(os.Stderr, "Commands:\n")
fmt.Fprintf(os.Stderr, " parse-check <path/to/bird.conf> run bird -c <path> -p (syntax check)\n")
fmt.Fprintf(os.Stderr, " configure run birdc configure (reload running BIRD)\n")
flag.PrintDefaults()
}
flag.Parse()
args := flag.Args()
if len(args) < 1 {
flag.Usage()
os.Exit(2)
}
ctl := &birdfmt.BirdCtl{Socket: *socket}
if *bird != "" {
ctl.Bird = *bird
}
if *birdc != "" {
ctl.Birdc = *birdc
}
ctx, cancel := context.WithTimeout(context.Background(), *timeout)
defer cancel()
switch args[0] {
case "parse-check":
if len(args) != 2 {
fmt.Fprintln(os.Stderr, "parse-check requires exactly one argument: path to bird.conf")
os.Exit(2)
}
if err := ctl.ParseCheck(ctx, args[1]); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
case "configure":
if len(args) != 1 {
fmt.Fprintln(os.Stderr, "configure takes no extra arguments")
os.Exit(2)
}
if err := ctl.Configure(ctx); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
default:
fmt.Fprintf(os.Stderr, "unknown command: %s\n", args[0])
flag.Usage()
os.Exit(2)
}
}