# HG changeset patch # User Thomas De Schampheleire <[email protected]> # 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']) [email protected]() +@cli_util.auto_setup_app() [email protected]('--repo-location', help='Base path of repositories to index. Default: all') [email protected]('--index-only', help='Comma-separated list of repositories to build index on. Default: all') [email protected]('--update-only', help='Comma-separated list of repositories to re-build index on. Default: all') [email protected]('-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 """, ) _______________________________________________ kallithea-general mailing list [email protected] https://lists.sfconservancy.org/mailman/listinfo/kallithea-general
