Source code for faker_file.cli.command

import argparse
import sys
import typing

from .. import __version__

__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2023 Artur Barseghyan"
__license__ = "MIT"
__all__ = ("main",)


[docs]def main(): try: from .helpers import ( PROVIDERS, generate_completion_file, generate_file, get_method_kwargs, is_optional_type, ) except ImportError: print("You need to pip install faker-file[common] to use the CLI") sys.exit(1) parser = argparse.ArgumentParser( description="CLI for the faker-file package." ) subparsers = parser.add_subparsers( dest="command", help="Available file providers." ) # Add generate-completion subparser __generate_completion_subparser = subparsers.add_parser( "generate-completion", help="Generate bash completion file.", ) # Add version subparser __version_subparser = subparsers.add_parser( "version", help="Print version.", ) for method_name, provider in PROVIDERS.items(): subparser = subparsers.add_parser( method_name, help=f"Generate a {method_name.split('_file')[0]} file.", ) method_kwargs, annotations = get_method_kwargs(provider, method_name) for arg, default in method_kwargs.items(): arg_type = annotations[arg] arg_kwargs = { "default": default, "help": f"{arg} (default: {default})", "type": ( arg_type.__args__[0] if isinstance(arg_type, typing._GenericAlias) and is_optional_type(arg_type) else arg_type ), } subparser.add_argument(f"--{arg}", **arg_kwargs) # Add the optional num_files argument subparser.add_argument( "--nb_files", default=1, type=int, help="number of files to generate (default: 1)", ) args = parser.parse_args() if args.command == "generate-completion": generate_completion_file() elif args.command == "version": print(__version__) elif args.command: kwargs = {k: v for k, v in vars(args).items() if k not in ("command",)} for counter in range(args.nb_files): output_file = generate_file(args.command, **kwargs) print( f"Generated {args.command} file " f"({counter+1} of {args.nb_files}): " f"{output_file.data['filename']}" ) else: parser.print_help() sys.exit(1)