[PATCH 14 of 17 v3] cli: convert 'gearbox make-index' into 'kallithea-cli index-create'

Thomas De Schampheleire patrickdepinguin at gmail.com
Thu Oct 18 20:49:37 UTC 2018


# HG changeset patch
# User Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
# Date 1539809033 -7200
#      Wed Oct 17 22:43:53 2018 +0200
# Node ID 9070ecd3538890d6af539570f6e48ce0ee15d2f7
# Parent  795afb2faf6aa22f54f18b8d61eff80e93304ae4
cli: convert 'gearbox make-index' into 'kallithea-cli index-create'

diff --git a/docs/setup.rst b/docs/setup.rst
--- a/docs/setup.rst
+++ b/docs/setup.rst
@@ -145,23 +145,23 @@ Kallithea provides full text search of r
 
 For an incremental index build, run::
 
-    gearbox make-index -c my.ini
+    kallithea-cli index-create my.ini
 
 For a full index rebuild, run::
 
-    gearbox make-index -c my.ini -f
+    kallithea-cli index-create --full my.ini
 
 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 --index-only=vcs,kallithea my.ini
 
 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 /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
diff --git a/kallithea/bin/kallithea_cli.py b/kallithea/bin/kallithea_cli.py
--- a/kallithea/bin/kallithea_cli.py
+++ b/kallithea/bin/kallithea_cli.py
@@ -22,5 +22,6 @@ import kallithea.bin.kallithea_cli_celer
 import kallithea.bin.kallithea_cli_config
 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
diff --git a/kallithea/lib/paster_commands/make_index.py b/kallithea/bin/kallithea_cli_index.py
rename from kallithea/lib/paster_commands/make_index.py
rename to kallithea/bin/kallithea_cli_index.py
--- a/kallithea/lib/paster_commands/make_index.py
+++ b/kallithea/bin/kallithea_cli_index.py
@@ -12,86 +12,53 @@
 # 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.
+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
+from kallithea.bin.kallithea_cli_base import cli
+import kallithea.bin.kallithea_cli_util as cli_util
 
 import os
+from string import strip
 import sys
 
-from string import strip
-from kallithea.model.repo import RepoModel
-from kallithea.lib.paster_commands.common import BasePasterCommand
+import kallithea
+from kallithea.lib.indexers.daemon import WhooshIndexingDaemon
+from kallithea.lib.pidlock import LockHeld, DaemonLock
 from kallithea.lib.utils import load_rcextensions
-
-
-class Command(BasePasterCommand):
-    "Kallithea: Create or update full text search index"
+from kallithea.model.repo import RepoModel
 
-    def take_action(self, args):
-        index_location = self.config['index_dir']
-        load_rcextensions(self.config['here'])
+ at cli.command()
+ at cli_util.auto_setup_app()
+ at click.option('--repo-location', help='Base path of repositories to index. Default: all')
+ at click.option('--index-only', help='Comma-separated list of repositories to build index on. Default: all')
+ at click.option('--update-only', help='Comma-separated list of repositories to re-build index on. Default: all')
+ at click.option('-f', '--full', 'full_index', help='Recreate the index from scratch')
+def index_create(config_file, repo_location, index_only, update_only, full_index):
+    """Create or update full text search index"""
 
-        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
+    index_location = kallithea.CONFIG['index_dir']
+    load_rcextensions(kallithea.CONFIG['here'])
 
-        #======================================================================
-        # 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)
+    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
 
-        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
+    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)
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -158,7 +158,6 @@ setuptools.setup(
     main = kallithea.config.middleware:make_app
 
     [gearbox.commands]
-    make-index=kallithea.lib.paster_commands.make_index:Command
     upgrade-db=kallithea.lib.dbmigrate:UpgradeDb
     """,
 )


More information about the kallithea-general mailing list