chore: update command handlers to return 'handled' boolean

### CHANGES

- Add `handled` boolean return to command handlers
- Modify `handleSetupAndServerCommands` to use `handled`
- Update `handleConfigurationCommands` with `handled` logic
- Implement `handled` return in `handleExtensionCommands`
- Revise `handleListingCommands` to support `handled` return
- Adjust `handleManagementCommands` to return `handled`
This commit is contained in:
Kayvan Sylvan
2025-07-09 02:57:29 -07:00
parent 137aff2268
commit b884c529bd
7 changed files with 45 additions and 39 deletions

BIN
fabric Executable file

Binary file not shown.

View File

@@ -32,27 +32,28 @@ func Cli(version string) (err error) {
}
// Handle setup and server commands
if err = handleSetupAndServerCommands(currentFlags, registry, version); err != nil {
var handled bool
if handled, err = handleSetupAndServerCommands(currentFlags, registry, version); err != nil || handled {
return
}
// Handle configuration commands
if err = handleConfigurationCommands(currentFlags, registry); err != nil {
if handled, err = handleConfigurationCommands(currentFlags, registry); err != nil || handled {
return
}
// Handle listing commands
if err = handleListingCommands(currentFlags, registry.Db, registry); err != nil {
if handled, err = handleListingCommands(currentFlags, registry.Db, registry); err != nil || handled {
return
}
// Handle management commands
if err = handleManagementCommands(currentFlags, registry.Db); err != nil {
if handled, err = handleManagementCommands(currentFlags, registry.Db); err != nil || handled {
return
}
// Handle extension commands
if err = handleExtensionCommands(currentFlags, registry); err != nil {
if handled, err = handleExtensionCommands(currentFlags, registry); err != nil || handled {
return
}

View File

@@ -5,23 +5,24 @@ import (
)
// handleConfigurationCommands handles configuration-related commands
func handleConfigurationCommands(currentFlags *Flags, registry *core.PluginRegistry) (err error) {
// Returns (handled, error) where handled indicates if a command was processed and should exit
func handleConfigurationCommands(currentFlags *Flags, registry *core.PluginRegistry) (handled bool, err error) {
if currentFlags.UpdatePatterns {
if err = registry.PatternsLoader.PopulateDB(); err != nil {
return
return true, err
}
// Save configuration in case any paths were migrated during pattern loading
err = registry.SaveEnvFile()
return
return true, err
}
if currentFlags.ChangeDefaultModel {
if err = registry.Defaults.Setup(); err != nil {
return
return true, err
}
err = registry.SaveEnvFile()
return
return true, err
}
return nil
return false, nil
}

View File

@@ -5,21 +5,22 @@ import (
)
// handleExtensionCommands handles extension-related commands
func handleExtensionCommands(currentFlags *Flags, registry *core.PluginRegistry) (err error) {
// Returns (handled, error) where handled indicates if a command was processed and should exit
func handleExtensionCommands(currentFlags *Flags, registry *core.PluginRegistry) (handled bool, err error) {
if currentFlags.ListExtensions {
err = registry.TemplateExtensions.ListExtensions()
return
return true, err
}
if currentFlags.AddExtension != "" {
err = registry.TemplateExtensions.RegisterExtension(currentFlags.AddExtension)
return
return true, err
}
if currentFlags.RemoveExtension != "" {
err = registry.TemplateExtensions.RemoveExtension(currentFlags.RemoveExtension)
return
return true, err
}
return nil
return false, nil
}

View File

@@ -10,52 +10,53 @@ import (
)
// handleListingCommands handles listing-related commands
func handleListingCommands(currentFlags *Flags, fabricDb *fsdb.Db, registry *core.PluginRegistry) (err error) {
// Returns (handled, error) where handled indicates if a command was processed and should exit
func handleListingCommands(currentFlags *Flags, fabricDb *fsdb.Db, registry *core.PluginRegistry) (handled bool, err error) {
if currentFlags.LatestPatterns != "0" {
var parsedToInt int
if parsedToInt, err = strconv.Atoi(currentFlags.LatestPatterns); err != nil {
return
return true, err
}
if err = fabricDb.Patterns.PrintLatestPatterns(parsedToInt); err != nil {
return
return true, err
}
return
return true, nil
}
if currentFlags.ListPatterns {
err = fabricDb.Patterns.ListNames(currentFlags.ShellCompleteOutput)
return
return true, err
}
if currentFlags.ListAllModels {
var models *ai.VendorsModels
if models, err = registry.VendorManager.GetModels(); err != nil {
return
return true, err
}
models.Print(currentFlags.ShellCompleteOutput)
return
return true, nil
}
if currentFlags.ListAllContexts {
err = fabricDb.Contexts.ListNames(currentFlags.ShellCompleteOutput)
return
return true, err
}
if currentFlags.ListAllSessions {
err = fabricDb.Sessions.ListNames(currentFlags.ShellCompleteOutput)
return
return true, err
}
if currentFlags.ListStrategies {
err = registry.Strategies.ListStrategies(currentFlags.ShellCompleteOutput)
return
return true, err
}
if currentFlags.ListVendors {
err = registry.ListVendors(os.Stdout)
return
return true, err
}
return nil
return false, nil
}

View File

@@ -5,26 +5,27 @@ import (
)
// handleManagementCommands handles management-related commands (delete, print, etc.)
func handleManagementCommands(currentFlags *Flags, fabricDb *fsdb.Db) (err error) {
// Returns (handled, error) where handled indicates if a command was processed and should exit
func handleManagementCommands(currentFlags *Flags, fabricDb *fsdb.Db) (handled bool, err error) {
if currentFlags.WipeContext != "" {
err = fabricDb.Contexts.Delete(currentFlags.WipeContext)
return
return true, err
}
if currentFlags.WipeSession != "" {
err = fabricDb.Sessions.Delete(currentFlags.WipeSession)
return
return true, err
}
if currentFlags.PrintSession != "" {
err = fabricDb.Sessions.PrintSession(currentFlags.PrintSession)
return
return true, err
}
if currentFlags.PrintContext != "" {
err = fabricDb.Contexts.PrintContext(currentFlags.PrintContext)
return
return true, err
}
return nil
return false, nil
}

View File

@@ -6,24 +6,25 @@ import (
)
// handleSetupAndServerCommands handles setup and server-related commands
func handleSetupAndServerCommands(currentFlags *Flags, registry *core.PluginRegistry, version string) (err error) {
// Returns (handled, error) where handled indicates if a command was processed and should exit
func handleSetupAndServerCommands(currentFlags *Flags, registry *core.PluginRegistry, version string) (handled bool, err error) {
// if the setup flag is set, run the setup function
if currentFlags.Setup {
err = registry.Setup()
return
return true, err
}
if currentFlags.Serve {
registry.ConfigureVendors()
err = restapi.Serve(registry, currentFlags.ServeAddress, currentFlags.ServeAPIKey)
return
return true, err
}
if currentFlags.ServeOllama {
registry.ConfigureVendors()
err = restapi.ServeOllama(registry, currentFlags.ServeAddress, version)
return
return true, err
}
return nil
return false, nil
}