changeset 7416:502b9bd0a24d

cli: convert 'gearbox make-index' into 'kallithea-cli index-create'
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Sun, 18 Nov 2018 20:02:17 +0100
parents f9c8fec48185
children 1d539bb18165
files docs/setup.rst kallithea/bin/kallithea_cli.py kallithea/bin/kallithea_cli_index.py kallithea/lib/paster_commands/make_index.py setup.py
diffstat 5 files changed, 67 insertions(+), 102 deletions(-) [+]
line wrap: on
line diff
--- a/docs/setup.rst	Sun Nov 18 20:02:17 2018 +0100
+++ b/docs/setup.rst	Sun Nov 18 20:02:17 2018 +0100
@@ -145,23 +145,23 @@
 
 For an incremental index build, run::
 
-    gearbox make-index -c my.ini
+    kallithea-cli index-create -c my.ini
 
 For a full index rebuild, run::
 
-    gearbox make-index -c my.ini -f
+    kallithea-cli index-create -c my.ini --full
 
 The ``--repo-location`` option allows the location of the repositories to be overridden;
 usually, the location is retrieved from the Kallithea database.
 
 The ``--index-only`` option can be used to limit the indexed repositories to a comma-separated list::
 
-    gearbox make-index -c my.ini --index-only=vcs,kallithea
+    kallithea-cli index-create -c my.ini --index-only=vcs,kallithea
 
 To keep your index up-to-date it is necessary to do periodic index builds;
 for this, it is recommended to use a crontab entry. Example::
 
-    0  3  *  *  *  /path/to/virtualenv/bin/gearbox make-index -c /path/to/kallithea/my.ini
+    0  3  *  *  *  /path/to/virtualenv/bin/kallithea-cli index-create -c /path/to/kallithea/my.ini
 
 When using incremental mode (the default), Whoosh will check the last
 modification date of each file and add it to be reindexed if a newer file is
--- a/kallithea/bin/kallithea_cli.py	Sun Nov 18 20:02:17 2018 +0100
+++ b/kallithea/bin/kallithea_cli.py	Sun Nov 18 20:02:17 2018 +0100
@@ -20,5 +20,6 @@
 import kallithea.bin.kallithea_cli_db
 import kallithea.bin.kallithea_cli_extensions
 import kallithea.bin.kallithea_cli_iis
+import kallithea.bin.kallithea_cli_index
 import kallithea.bin.kallithea_cli_ishell
 import kallithea.bin.kallithea_cli_repo
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kallithea/bin/kallithea_cli_index.py	Sun Nov 18 20:02:17 2018 +0100
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+"""
+This file was forked by the Kallithea project in July 2014 and later moved.
+Original author and date, and relevant copyright and licensing information is below:
+:created_on: Aug 17, 2010
+:author: marcink
+:copyright: (c) 2013 RhodeCode GmbH, and others.
+:license: GPLv3, see LICENSE.md for more details.
+"""
+import click
+import kallithea.bin.kallithea_cli_base as cli_base
+
+import os
+from string import strip
+import sys
+
+import kallithea
+from kallithea.lib.indexers.daemon import WhooshIndexingDaemon
+from kallithea.lib.pidlock import LockHeld, DaemonLock
+from kallithea.lib.utils import load_rcextensions
+from kallithea.model.repo import RepoModel
+
+@cli_base.register_command(config_file_initialize_app=True)
+@click.option('--repo-location', help='Base path of repositories to index. Default: all')
+@click.option('--index-only', help='Comma-separated list of repositories to build index on. Default: all')
+@click.option('--update-only', help='Comma-separated list of repositories to re-build index on. Default: all')
+@click.option('-f', '--full', 'full_index', help='Recreate the index from scratch')
+def index_create(repo_location, index_only, update_only, full_index):
+    """Create or update full text search index"""
+
+    index_location = kallithea.CONFIG['index_dir']
+    load_rcextensions(kallithea.CONFIG['here'])
+
+    if not repo_location:
+        repo_location = RepoModel().repos_path
+    repo_list = map(strip, index_only.split(',')) \
+        if index_only else None
+    repo_update_list = map(strip, update_only.split(',')) \
+        if update_only else None
+
+    try:
+        l = DaemonLock(os.path.join(index_location, 'make_index.lock'))
+        WhooshIndexingDaemon(index_location=index_location,
+                             repo_location=repo_location,
+                             repo_list=repo_list,
+                             repo_update_list=repo_update_list) \
+            .run(full_index=full_index)
+        l.release()
+    except LockHeld:
+        sys.exit(1)
--- a/kallithea/lib/paster_commands/make_index.py	Sun Nov 18 20:02:17 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-# -*- coding: utf-8 -*-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-"""
-kallithea.lib.paster_commands.make_index
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-make-index gearbox command for Kallithea
-
-This file was forked by the Kallithea project in July 2014.
-Original author and date, and relevant copyright and licensing information is below:
-:created_on: Aug 17, 2010
-:author: marcink
-:copyright: (c) 2013 RhodeCode GmbH, and others.
-:license: GPLv3, see LICENSE.md for more details.
-"""
-
-
-import os
-import sys
-
-from string import strip
-from kallithea.model.repo import RepoModel
-from kallithea.lib.paster_commands.common import BasePasterCommand
-from kallithea.lib.utils import load_rcextensions
-
-
-class Command(BasePasterCommand):
-    "Kallithea: Create or update full text search index"
-
-    def take_action(self, args):
-        index_location = self.config['index_dir']
-        load_rcextensions(self.config['here'])
-
-        repo_location = args.repo_location \
-            if args.repo_location else RepoModel().repos_path
-        repo_list = map(strip, args.repo_list.split(',')) \
-            if args.repo_list else None
-
-        repo_update_list = map(strip, args.repo_update_list.split(',')) \
-            if args.repo_update_list else None
-
-        #======================================================================
-        # WHOOSH DAEMON
-        #======================================================================
-        from kallithea.lib.pidlock import LockHeld, DaemonLock
-        from kallithea.lib.indexers.daemon import WhooshIndexingDaemon
-        try:
-            l = DaemonLock(os.path.join(index_location, 'make_index.lock'))
-            WhooshIndexingDaemon(index_location=index_location,
-                                 repo_location=repo_location,
-                                 repo_list=repo_list,
-                                 repo_update_list=repo_update_list) \
-                .run(full_index=args.full_index)
-            l.release()
-        except LockHeld:
-            sys.exit(1)
-
-    def get_parser(self, prog_name):
-        parser = super(Command, self).get_parser(prog_name)
-
-        parser.add_argument('--repo-location',
-                          action='store',
-                          dest='repo_location',
-                          help="Specifies repositories location to index OPTIONAL",
-                          )
-        parser.add_argument('--index-only',
-                          action='store',
-                          dest='repo_list',
-                          help="Specifies a comma separated list of repositories "
-                                "to build index on. If not given all repositories "
-                                "are scanned for indexing. OPTIONAL",
-                          )
-        parser.add_argument('--update-only',
-                          action='store',
-                          dest='repo_update_list',
-                          help="Specifies a comma separated list of repositories "
-                                "to re-build index on. OPTIONAL",
-                          )
-        parser.add_argument('-f',
-                          action='store_true',
-                          dest='full_index',
-                          help="Specifies that index should be made full i.e"
-                                " destroy old and build from scratch",
-                          default=False)
-
-        return parser
--- a/setup.py	Sun Nov 18 20:02:17 2018 +0100
+++ b/setup.py	Sun Nov 18 20:02:17 2018 +0100
@@ -160,7 +160,6 @@
 
     [gearbox.commands]
     celeryd=kallithea.lib.paster_commands.celeryd:Command
-    make-index=kallithea.lib.paster_commands.make_index:Command
     upgrade-db=kallithea.lib.dbmigrate:UpgradeDb
     """,
 )