Update root.go
This commit is contained in:
parent
ce4ea5c09c
commit
e7a9e1092b
1 changed files with 34 additions and 0 deletions
34
cli/root.go
34
cli/root.go
|
|
@ -3,8 +3,10 @@ package cli
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
|
||||
"github.com/gregorybednov/lbc/blockchain"
|
||||
|
|
@ -71,3 +73,35 @@ func Execute() {
|
|||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func ExecuteWithArgs(args []string, home string, stdout, stderr io.Writer) error {
|
||||
// Перенаправляем вывод Cobra
|
||||
if stdout != nil {
|
||||
rootCmd.SetOut(stdout)
|
||||
}
|
||||
if stderr != nil {
|
||||
rootCmd.SetErr(stderr)
|
||||
}
|
||||
|
||||
// Если задан home, подставим дефолты, на которые завязаны флаги
|
||||
// (флаги привязаны к переменным через StringVar, поэтому смена переменных до Execute — норм.)
|
||||
origCfg := defaultConfigPath
|
||||
origDB := dbPath
|
||||
|
||||
if home != "" {
|
||||
defaultConfigPath = filepath.Join(home, "config", "config.toml")
|
||||
// Примем convention: BADGER в (home)/data/badger, но если у тебя другое — поменяй строку ниже.
|
||||
dbPath = filepath.Join(home, "data", "badger")
|
||||
}
|
||||
|
||||
// Важное: подаём именно те аргументы, которые хотел вызвать вызывающий код.
|
||||
rootCmd.SetArgs(args)
|
||||
|
||||
// Выполняем и аккуратно восстанавливаем глобальные дефолты.
|
||||
err := rootCmd.Execute()
|
||||
|
||||
defaultConfigPath = origCfg
|
||||
dbPath = origDB
|
||||
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue