[PATCH 7 of 7 WIPv2] cli: convert 'gearbox repo-scan' into 'kallithea-cli repo scan'
Thomas De Schampheleire
patrickdepinguin at gmail.com
Mon Oct 8 19:57:38 UTC 2018
# HG changeset patch
# User Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
# Date 1539024021 -7200
# Mon Oct 08 20:40:21 2018 +0200
# Node ID 2ea19b54d59e29e2224bc5adc1db9a8bda2eb0f9
# Parent 2993ba9db9e2d9cfb02d298d1933b04d4f4086fe
cli: convert 'gearbox repo-scan' into 'kallithea-cli repo scan'
diff --git a/docs/dev/dbmigrations.rst b/docs/dev/dbmigrations.rst
--- a/docs/dev/dbmigrations.rst
+++ b/docs/dev/dbmigrations.rst
@@ -31,7 +31,7 @@ 4. After every database schema change, r
rm temp.db
gearbox setup-db -c temp.ini --repos=/var/repos --user=doe --email doe at example.com --password=123456 --no-public-access --force-yes
- gearbox repo-scan -c temp.ini
+ kallithea-cli repo scan temp.ini
5. Once satisfied with the schema changes, auto-generate a draft Alembic
script using the development database that has *not* been upgraded.
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
@@ -18,6 +18,7 @@ from kallithea.bin.kallithea_cli_cache i
from kallithea.bin.kallithea_cli_celery import celery
from kallithea.bin.kallithea_cli_config import config
from kallithea.bin.kallithea_cli_ishell import ishell
+from kallithea.bin.kallithea_cli_repo import repo
@click.group()
def cli():
@@ -28,3 +29,4 @@ cli.add_command(cache)
cli.add_command(celery)
cli.add_command(config)
cli.add_command(ishell)
+cli.add_command(repo)
diff --git a/kallithea/lib/paster_commands/repo_scan.py b/kallithea/bin/kallithea_cli_repo.py
rename from kallithea/lib/paster_commands/repo_scan.py
rename to kallithea/bin/kallithea_cli_repo.py
--- a/kallithea/lib/paster_commands/repo_scan.py
+++ b/kallithea/bin/kallithea_cli_repo.py
@@ -12,53 +12,42 @@
# 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.repo_scan
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-repo-scan 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: Feb 9, 2013
:author: marcink
:copyright: (c) 2013 RhodeCode GmbH, and others.
:license: GPLv3, see LICENSE.md for more details.
"""
-
-
+import click
+import kallithea.bin.kallithea_cli_util as cli_util
from kallithea.model.scm import ScmModel
-from kallithea.lib.paster_commands.common import BasePasterCommand
from kallithea.lib.utils import repo2db_mapper
-
-class Command(BasePasterCommand):
- """Kallithea: Scan file system for repositories
+ at click.group()
+def repo():
+ pass
- Search under the repository root configured in the database,
- all new repositories, and report missing ones with an option of removing them.
- """
+ at repo.command()
+ at cli_util.auto_setup_app()
+ at click.option('--remove-missing', is_flag=True,
+ help='Remove missing repositories from the Kallithea database.')
+def scan(config_file, remove_missing):
+ """Scan filesystem for repositories.
- def take_action(self, args):
- rm_obsolete = args.delete_obsolete
- print 'Now scanning root location for new repos ...'
- added, removed = repo2db_mapper(ScmModel().repo_scan(),
- remove_obsolete=rm_obsolete)
- print 'Scan completed.'
- if added:
- print 'Added: %s' % ', '.join(added)
- if removed:
- print '%s: %s' % ('Removed' if rm_obsolete else 'Missing',
- ', '.join(removed))
-
- def get_parser(self, prog_name):
- parser = super(Command, self).get_parser(prog_name)
-
- parser.add_argument(
- '--delete-obsolete',
- action='store_true',
- help="Use this flag do delete repositories that are "
- "present in Kallithea database but not on the filesystem",
- )
-
- return parser
+ Search the configured repository root for new repositories and add them
+ into Kallithea.
+ Additionally, report repositories that were previously known to Kallithea
+ but are no longer present on the filesystem. If option --remove-missing is
+ given, remove the missing repositories from the Kallithea database.
+ """
+ click.echo('Now scanning root location for new repos ...')
+ added, removed = repo2db_mapper(ScmModel().repo_scan(),
+ remove_obsolete=remove_missing)
+ click.echo('Scan completed.')
+ if added:
+ click.echo('Added: %s' % ', '.join(added))
+ if removed:
+ click.echo('%s: %s' % ('Removed' if remove_missing else 'Missing',
+ ', '.join(removed)))
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -162,7 +162,6 @@ setuptools.setup(
install-iis=kallithea.lib.paster_commands.install_iis:Command
make-index=kallithea.lib.paster_commands.make_index:Command
make-rcext=kallithea.lib.paster_commands.make_rcextensions:Command
- repo-scan=kallithea.lib.paster_commands.repo_scan:Command
setup-db=kallithea.lib.paster_commands.setup_db:Command
update-repoinfo=kallithea.lib.paster_commands.update_repoinfo:Command
upgrade-db=kallithea.lib.dbmigrate:UpgradeDb
More information about the kallithea-general
mailing list