[PATCH 3 of 3 PoC] cli: convert 'gearbox make-config' to 'kallithea config create'

Mads Kiilerich mads at kiilerich.com
Wed Sep 26 11:01:21 UTC 2018


On 9/24/18 10:45 PM, Thomas De Schampheleire wrote:
> # HG changeset patch
> # User Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
> # Date 1537821464 -7200
> #      Mon Sep 24 22:37:44 2018 +0200
> # Node ID 3c33619af70545eb9b3cbba585181094df67afbb
> # Parent  b807b1e90e61d2c8c16c5e3ec5978ef7dd7a2d31
> cli: convert 'gearbox make-config' to 'kallithea config create'


Intuitively, I think I would find 'kallithea-config --create' more 
obvious. But that might just be a habit. I guess it makes sense with 
separate "sub-command area" and "sub-command" ... and then "--arguments" 
to that. So ... just a thought ...

The main remaining doubt is as mentioned before, if the bare command 
name "kallithea" is misleading.


> Notes regarding the original implementation:
> - show_defaults was trying to obtain a custom
> value from mako_variable_values, which would never happen because
> the argument parser would not allow passing custom key-value pairs in
> combination with '--show-defaults'.
>
> - variables TMPL_FILE and here were no longer used


Right. I will land fixes for these issues. You can probably just take 
your side when rebasing.


> TODO: documentation update
>
> 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
> @@ -14,6 +14,7 @@
>   
>   import click
>   
> +from kallithea.bin.kallithea_cli_config import config
>   from kallithea.bin.kallithea_cli_frontend import frontend
>   
>   @click.group()
> @@ -21,4 +22,5 @@ def cli():
>       """Various commands to set up a Kallithea instance."""
>       pass
>   
> +cli.add_command(config)
>   cli.add_command(frontend)
> diff --git a/kallithea/lib/paster_commands/make_config.py b/kallithea/bin/kallithea_cli_config.py
> rename from kallithea/lib/paster_commands/make_config.py
> rename to kallithea/bin/kallithea_cli_config.py
> --- a/kallithea/lib/paster_commands/make_config.py
> +++ b/kallithea/bin/kallithea_cli_config.py
> @@ -11,38 +11,40 @@
>   #
>   # 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_config
> -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   
> -make-config gearbox command for Kallithea
> -
> -:license: GPLv3, see LICENSE.md for more details.
> -"""
> -
> -
> +import click
>   import os
> -import sys
>   import uuid
> -import argparse
>   from collections import defaultdict
>   
>   import mako.exceptions
>   
> -TMPL = 'template.ini.mako'
> -here = os.path.dirname(os.path.abspath(__file__))
> -
> -from kallithea.lib.paster_commands.common import BasePasterCommand
>   from kallithea.lib import inifile
>   
> + at click.group()
> +def config():
> +    pass
>   
> -class Command(BasePasterCommand):
> -    """Kallithea: Create a new config file
> +def show_defaults(ctx, param, value):
> +    if not value or ctx.resilient_parsing:


That one is not entirely obvious ... and especially why a bare return si 
the right response. Should it have a comment with an explanation ... or 
a hint about what to look for in the documentation?


> +        return
> +
> +    for key, value in inifile.default_variables.items():
> +        click.echo('%s=%s' % (key, value))
>   
> -    make-config is part of a two-phase installation process (the
> -    second phase is setup-app). make-config creates a bare configuration
> -    file (possibly filling in defaults from the extra
> -    variables you give).
> +    ctx.exit()
> +
> + at config.command()
> + at click.option('--show-defaults', callback=show_defaults,
> +              is_flag=True, expose_value=False, is_eager=True,
> +              help='Show the default values that can be overridden')
> + at click.argument('config_file', type=click.Path())
> + at click.argument('key_value_pairs', nargs=-1)
> +def create(config_file, key_value_pairs):
> +    """Create a new configuration file
> +
> +    This command creates a bare configuration file (possibly filling in
> +    defaults from the extra variables you give).


What does "bare" mean here? It is actually quite verbose in my opinion.


/Mads



More information about the kallithea-general mailing list