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

barseghyanartur / faker-file / 6115111440

07 Sep 2023 09:51PM UTC coverage: 99.735% (+5.4%) from 94.308%
6115111440

push

github

barseghyanartur
Add more tests

3 of 3 new or added lines in 1 file covered. (100.0%)

3015 of 3023 relevant lines covered (99.74%)

4.84 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
4✔
2
import sys
4✔
3
import typing
4✔
4

5
from .. import __version__
4✔
6

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

12

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

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

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

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

45
    for method_name, provider in PROVIDERS.items():
4✔
46
        subparser = subparsers.add_parser(
4✔
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)
4✔
51
        for arg, default in method_kwargs.items():
4✔
52
            arg_type = annotations[arg]
4✔
53
            arg_kwargs = {
4✔
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)
4✔
65

66
        # Add the optional num_files argument
67
        subparser.add_argument(
4✔
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()
4✔
75

76
    if args.command == "generate-completion":
4✔
77
        generate_completion_file()
4✔
78
    elif args.command == "version":
4✔
79
        print(__version__)
4✔
80
    elif args.command:
4✔
81
        kwargs = {k: v for k, v in vars(args).items() if k not in ("command",)}
4✔
82
        for counter in range(args.nb_files):
4✔
83
            output_file = generate_file(args.command, **kwargs)
4✔
84
            print(
4✔
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()
4✔
91
        sys.exit(1)
4✔
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