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 (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"path/filepath"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/gregorybednov/lbc/blockchain"
|
"github.com/gregorybednov/lbc/blockchain"
|
||||||
|
|
@ -71,3 +73,35 @@ func Execute() {
|
||||||
os.Exit(1)
|
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