[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