45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
// Package cli wires the ops cobra command tree.
|
|
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/anomalyco/opencode-provider-switch/internal/config"
|
|
)
|
|
|
|
// configPath is populated from the global --config flag.
|
|
var configPath string
|
|
|
|
// loadCfg opens the active ops config, with the selected path.
|
|
func loadCfg() (*config.Config, error) {
|
|
return config.Load(configPath)
|
|
}
|
|
|
|
// NewRootCmd builds the root ops command.
|
|
func NewRootCmd(version string) *cobra.Command {
|
|
root := &cobra.Command{
|
|
Use: "ops",
|
|
Short: "opencode-provider-switch: local alias + failover proxy for OpenCode",
|
|
SilenceUsage: true,
|
|
SilenceErrors: false,
|
|
Version: version,
|
|
}
|
|
root.PersistentFlags().StringVar(&configPath, "config", "", "path to ops config.json (default: $XDG_CONFIG_HOME/ops/config.json)")
|
|
|
|
root.AddCommand(newServeCmd())
|
|
root.AddCommand(newDoctorCmd())
|
|
root.AddCommand(newProviderCmd())
|
|
root.AddCommand(newAliasCmd())
|
|
root.AddCommand(newOpencodeCmd())
|
|
return root
|
|
}
|
|
|
|
// fail prints to stderr and exits 1.
|
|
func fail(format string, args ...any) {
|
|
fmt.Fprintf(os.Stderr, "error: "+format+"\n", args...)
|
|
os.Exit(1)
|
|
}
|