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 -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 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 @@ -20,5 +20,6 @@ import kallithea.bin.kallithea_cli_confi 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 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,51 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . """ -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 +import kallithea.bin.kallithea_cli_base as cli_base 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']) +@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""" - 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 @@ -160,7 +160,6 @@ setuptools.setup( [gearbox.commands] celeryd=kallithea.lib.paster_commands.celeryd:Command - make-index=kallithea.lib.paster_commands.make_index:Command upgrade-db=kallithea.lib.dbmigrate:UpgradeDb """, )