{
    "description": "Tools for testing and managing plugins.",
    "dependencies": {
        "types": "0.0",
        "bespin_server": "0.0",
        "appsupport": "0.0"
    },
    "provides": [
        {
            "ep": "command",
            "name": "plugin reload",
            "params": [
                {
                    "name": "plugin",
                    "type": "text"
                }
            ],
            "description": "Reload the named plugin.",
            "pointer": "#reloadCommand"
        },
        {
            "ep": "command",
            "name": "test",
            "params": [
                {
                    "name": "testmodule",
                    "type": {
                        "name": "selection",
                        "pointer": "plugindev:index#getPlugins"
                    },
                    "description": "Provide a plugin name to run all tests for a plugin, 'all' to run all known tests, or plugin:module to run the tests in a specific module. If you omit this, the last tests run will be run again.",
                    "defaultValue": null
                }
            ],
            "description": "Run a collection of tests.",
            "pointer": "testing#testrunner"
        },
        {
            "ep": "command",
            "name": "plugin",
            "description": "Plugin management"
        },
        {
            "ep": "command",
            "name": "plugin add",
            "description": "Add a file or directory in your Bespin files as a plugin.",
            "params": [
                {
                    "name": "path",
                    "type": "text"
                }
            ],
            "pointer": "commands#add"
        },
        {
            "ep": "command",
            "name": "plugin list",
            "description": "List the installed plugins",
            "pointer": "commands#list"
        },
        {
            "ep": "command",
            "name": "plugin remove",
            "description": "Remove a plugin (deletes installed plugins, just removes the reference to 'add'ed plugins).",
            "params": [
                {
                    "name": "plugin",
                    "type":
                    {
                        "name": "selection",
                        "pointer": "bespin:plugins#getUserPlugins"
                    }
                }
            ],
            "pointer": "commands#remove"
        },
        {
            "ep": "command",
            "name": "plugin install",
            "description": "Install a plugin from a given URL",
            "params": [
                {
                    "name": "plugin",
                    "type": "text",
                    "description": "name (if in Gallery) or URL where the plugin can be found"
                }
            ],
            "pointer": "commands#install"
        },
        {
            "ep": "command",
            "name": "plugin upload",
            "description": "Upload a plugin you've created to the plugin gallery.",
            "params": [
                {
                    "name": "pluginName",
                    "type": "text",
                    "description": "name of the plugin to upload"
                }
            ],
            "pointer": "commands#upload"
        },
        {
            "ep": "command",
            "name": "plugin gallery",
            "description": "List the plugins in the Plugin Gallery",
            "pointer": "commands#gallery"
        },
        {
            "ep": "command",
            "name": "plugin order",
            "description": "Set the order of plugin extensions.",
            "params": [
                {
                    "name": "order",
                    "type": "text",
                    "description": "if given, set the plugin order, otherwise show the order",
                    "defaultValue": null
                }
            ],
            "pointer": "commands#order"
        },
        {
            "ep": "command",
            "name": "plugin deactivate",
            "description": "Deactivate plugins.",
            "params": [
                {
                    "name": "pluginNames",
                    "type":
                    {
                        "name": "selection",
                        "pointer": "plugindev:index#getUserActivePlugins"
                    },
                    "description": "Plugins to deactivate separated by a space",
                    "defaultValue": ""
                }
            ],
            "pointer": "commands#deactivate"
        },
        {
            "ep": "command",
            "name": "plugin activate",
            "description": "Activate plugins.",
            "params": [
                {
                    "name": "pluginNames",
                    "type":
                    {
                        "name": "selection",
                        "pointer": "plugindev:index#getUserDeactivatedPlugins"
                    },
                    "description": "Plugins to activate separated by a space",
                    "defaultValue": ""
                }
            ],
            "pointer": "commands#activate"
        },
        {
            "ep": "command",
            "name": "plugin info",
            "description": "Display detailed information for a plugin",
            "params": [
                {
                    "name": "pluginName",
                    "type": "text",
                    "description": "name of the plugin for which to display info"
                }
            ],
            "pointer": "commands#info"
        },
        {
            "ep": "command",
            "name": "ep",
            "description": "Display information about the extension points in this Bespin",
            "params": [
                {
                    "name": "ep",
                    "type": "text",
                    "description": "(optional) name of an extension point for which to display details"
                }
            ],
            "pointer": "commands#ep"
        },
        {
            "ep": "command",
            "name": "debug",
            "description": "Commands useful for debugging"
        },
        {
            "ep": "command",
            "name": "debug syntaxcontexts",
            "description": "Displays the active contexts at the insertion point",
            "pointer": "debug#syntaxContexts"
        },
        {
            "ep": "command",
            "name": "debug whosonfirst",
            "description": "Displays the first responder and key pane after 3 seconds",
            "pointer": "debug#whosOnFirst"
        },
        {
            "ep": "type",
            "name": "pluginURL",
            "description": "a valid URL (http/https) from which to install a plugin",
            "pointer": "commands#pluginURL"
        }
    ]
}
