return array();
                }
        }
+       function load_all() {
+               $plugins = array_map("basename", glob("plugins/*"));
+               $this->load(join(",", $plugins));
+       }
 
        function load($classlist) {
                $plugins = explode(",", $classlist);
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Digest mode for tt-rss (tablet friendly UI)",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Example plugin #1",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Example feed plugin",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Example routing plugin",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
                $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this);
        }
 
+       function _about() {
+               return array(1.0,
+                       "Share on Flattr plugin",
+                       "Nic Honing");
+       }
+
   function hook_article_button($line) {
 
        $article_id = $line["id"];
 
                $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this);
        }
 
+       function _about() {
+               return array(1.0,
+                       "Share on Google+ plugin",
+                       "homolibere");
+       }
+
        function get_js() {
                return file_get_contents(dirname(__FILE__) . "/googleplus.js");
        }
 
                $host->add_hook($host::HOOK_ARTICLE_BUTTON, $this);
        }
 
+       function _about() {
+               return array(1.0,
+                       "Share on Identi.ca",
+                       "fox");
+       }
+
        function get_js() {
                return file_get_contents(dirname(__FILE__) . "/identica.js");
        }
 
                $host->add_command("xml-import", "USER FILE: import articles from XML", $this);
        }
 
+       function _about() {
+               return array(1.0,
+                       "Imports and exports user data using a neutral XML format",
+                       "fox");
+       }
+
        function xml_import($args) {
                array_shift($args);
 
 
                2       => "Invalid object received",
                16      => "Access denied" );
 
+       function _about() {
+               return array(1.0,
+                       "Support for linking tt-rss instances together and sharing popular feeds.",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Adds a share article via email button",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Adds support for setting article notes",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Share article via Pinterest",
+                       "?");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Share article via Pocket (formerly Read It Later)",
+                       "?");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Inline image links in Reddit RSS feeds",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Share article by unique URL",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
        private $link;
        private $host;
 
+       function _about() {
+               return array(1.0,
+                       "Updates tt-rss installation to latest version.",
+                       "fox");
+       }
+
        function __construct($host) {
                $this->link = $host->get_link();
                $this->host = $host;
 
 
        init_connection($link);
 
-
        $op = $argv;
 
        if (count($argv) == 0 && !defined('STDIN')) {
                print "  -indexes            - recreate missing schema indexes\n";
                print "  -convert-filters    - convert type1 filters to type2\n";
                print "  -force-update       - force update of all feeds\n";
+               print "  -list-plugins       - list all available plugins\n";
                print "  -help               - show this help\n";
                print "Plugin options:\n";
 
                                last_updated = '1970-01-01'");
        }
 
+       if (in_array("-list-plugins", $op)) {
+               $tmppluginhost = new PluginHost($link);
+               $tmppluginhost->load_all();
+               foreach ($tmppluginhost->get_plugins() as $name => $plugin) {
+                       $about = $plugin->_about();
+
+                       printf("%-60s - v%.2f (by %s)\n%s\n\n",
+                               $name, $about[0], $about[2], $about[1]);
+               }
+       }
+
        $pluginhost->run_commands($op);
 
        db_close($link);