# Extensions Management Commands

use ../lib_provisioning/extensions *

# List available extensions
export def "main extensions list" [
    --type: string = ""  # Filter by type: provider, taskserv, or all
    --helpinfo (-h)      # Show help
]: nothing -> nothing {
    if $helpinfo {
        print "List available extensions"
        return
    }

    match $type {
        "provider" => {
            print "Available Provider Extensions:"
            list-providers
        }
        "taskserv" => {
            print "Available TaskServ Extensions:"
            list-taskservs
        }
        _ => {
            print "Available Extensions:"
            print "\nProviders:"
            list-providers

            print "\nTaskServs:"
            list-taskservs
        }
    }
}

# Show extension details
export def "main extensions show" [
    name: string         # Extension name
    --helpinfo (-h)      # Show help
]: nothing -> nothing {
    if $helpinfo {
        print "Show details for a specific extension"
        return
    }

    let provider = (get-provider $name)
    let taskserv = (get-taskserv $name)

    if ($provider | is-not-empty) {
        print $"Provider Extension: ($name)"
        $provider
    } else if ($taskserv | is-not-empty) {
        print $"TaskServ Extension: ($name)"
        $taskserv
    } else {
        print $"Extension '($name)' not found"
    }
}

# Initialize extensions
export def "main extensions init" [
    --helpinfo (-h)      # Show help
]: nothing -> nothing {
    if $helpinfo {
        print "Initialize extension registry"
        return
    }

    init-registry
    print "Extension registry initialized"
}

# Show current profile
export def "main profile show" [
    --helpinfo (-h)      # Show help
]: nothing -> nothing {
    if $helpinfo {
        print "Show current access profile"
        return
    }

    show-profile | table
}

# Create example profiles
export def "main profile create-examples" [
    --helpinfo (-h)      # Show help
]: nothing -> nothing {
    if $helpinfo {
        print "Create example profile files"
        return
    }

    create-example-profiles
}