• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

barseghyanartur / faker-file / 12491947667

25 Dec 2024 10:01AM UTC coverage: 99.969%. Remained the same
12491947667

push

github

web-flow
Up reqs (#96)

3256 of 3257 relevant lines covered (99.97%)

1.67 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/faker_file/cli/command.py
1
import argparse
1✔
2
import sys
1✔
3
import typing
1✔
4

5
from .. import __version__
1✔
6

7
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
1✔
8
__copyright__ = "2023 Artur Barseghyan"
1✔
9
__license__ = "MIT"
1✔
10
__all__ = ("main",)
1✔
11

12

13
def main():
1✔
14
    try:
1✔
15
        from .helpers import (
1✔
16
            PROVIDERS,
17
            generate_completion_file,
18
            generate_file,
19
            get_method_kwargs,
20
            is_optional_type,
21
        )
22
    except ImportError:
1✔
23
        print("You need to pip install faker-file[common] to use the CLI")
1✔
24
        sys.exit(1)
1✔
25

26
    parser = argparse.ArgumentParser(
1✔
27
        description="CLI for the faker-file package."
28
    )
29
    subparsers = parser.add_subparsers(
1✔
30
        dest="command", help="Available file providers."
31
    )
32

33
    # Add generate-completion subparser
34
    __generate_completion_subparser = subparsers.add_parser(
1✔
35
        "generate-completion",
36
        help="Generate bash completion file.",
37
    )
38

39
    # Add version subparser
40
    __version_subparser = subparsers.add_parser(
1✔
41
        "version",
42
        help="Print version.",
43
    )
44

45
    for method_name, provider in PROVIDERS.items():
1✔
46
        subparser = subparsers.add_parser(
1✔
47
            method_name,
48
            help=f"Generate a {method_name.split('_file')[0]} file.",
49
        )
50
        method_kwargs, annotations = get_method_kwargs(provider, method_name)
1✔
51
        for arg, default in method_kwargs.items():
1✔
52
            arg_type = annotations[arg]
1✔
53
            arg_kwargs = {
1✔
54
                "default": default,
55
                "help": f"{arg} (default: {default})",
56
                "type": (
57
                    arg_type.__args__[0]
58
                    if isinstance(arg_type, typing._GenericAlias)
59
                    and is_optional_type(arg_type)
60
                    else arg_type
61
                ),
62
            }
63

64
            subparser.add_argument(f"--{arg}", **arg_kwargs)
1✔
65

66
        # Add the optional num_files argument
67
        subparser.add_argument(
1✔
68
            "--nb_files",
69
            default=1,
70
            type=int,
71
            help="number of files to generate (default: 1)",
72
        )
73

74
    args = parser.parse_args()
1✔
75

76
    if args.command == "generate-completion":
1✔
77
        generate_completion_file()
1✔
78
    elif args.command == "version":
1✔
79
        print(__version__)
1✔
80
    elif args.command:
1✔
81
        kwargs = {k: v for k, v in vars(args).items() if k not in ("command",)}
1✔
82
        for counter in range(args.nb_files):
1✔
83
            output_file = generate_file(args.command, **kwargs)
1✔
84
            print(
1✔
85
                f"Generated {args.command} file "
86
                f"({counter+1} of {args.nb_files}): "
87
                f"{output_file.data['filename']}"
88
            )
89
    else:
90
        parser.print_help()
1✔
91
        sys.exit(1)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc