feat: implement core CLI packages and Phase 3 commands
- config: resolve binary dir, load/save .hf-config.json - mode: detect padded-cell vs manual mode via pass_mgr - client: HTTP client wrapper with auth header support - passmgr: pass_mgr integration (get-secret, set, generate) - output: human-readable + JSON output formatting with tables - help: help and help-brief renderer for groups/commands - commands: version, health, config (--url, --acc-mgr-token, show) - auth: token resolution helper (padded-cell auto / manual explicit) - main: command dispatcher with --json global flag support - README: updated with current package layout and status
This commit is contained in:
53
internal/commands/config.go
Normal file
53
internal/commands/config.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.hangman-lab.top/zhi/HarborForge.Cli/internal/config"
|
||||
"git.hangman-lab.top/zhi/HarborForge.Cli/internal/mode"
|
||||
"git.hangman-lab.top/zhi/HarborForge.Cli/internal/output"
|
||||
"git.hangman-lab.top/zhi/HarborForge.Cli/internal/passmgr"
|
||||
)
|
||||
|
||||
// RunConfigURL sets the base URL in the config file.
|
||||
func RunConfigURL(url string) {
|
||||
if url == "" {
|
||||
output.Error("usage: hf config --url <hf-url>")
|
||||
}
|
||||
if err := config.UpdateURL(url); err != nil {
|
||||
output.Errorf("failed to update config: %v", err)
|
||||
}
|
||||
fmt.Printf("base-url set to %s\n", url)
|
||||
}
|
||||
|
||||
// RunConfigAccMgrToken stores the account-manager token via pass_mgr.
|
||||
func RunConfigAccMgrToken(token string) {
|
||||
if token == "" {
|
||||
output.Error("usage: hf config --acc-mgr-token <token>")
|
||||
}
|
||||
if !mode.IsPaddedCell() {
|
||||
output.Error("--acc-mgr-token can only be set with padded-cell plugin")
|
||||
}
|
||||
if err := passmgr.SetAccountManagerToken(token); err != nil {
|
||||
output.Errorf("failed to store acc-mgr-token: %v", err)
|
||||
}
|
||||
fmt.Println("account-manager token stored successfully")
|
||||
}
|
||||
|
||||
// RunConfigShow displays the current config.
|
||||
func RunConfigShow() {
|
||||
cfg, err := config.Load()
|
||||
if err != nil {
|
||||
output.Errorf("config error: %v", err)
|
||||
}
|
||||
if output.JSONMode {
|
||||
output.PrintJSON(cfg)
|
||||
} else {
|
||||
p, _ := config.ConfigPath()
|
||||
output.PrintKeyValue(
|
||||
"base-url", cfg.BaseURL,
|
||||
"config-file", p,
|
||||
"mode", mode.Detect().String(),
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user