Coverage for dotenv_cli/cli.py: 94%
18 statements
« prev ^ index » next coverage.py v6.5.0, created at 2023-07-01 12:34 +0000
« prev ^ index » next coverage.py v6.5.0, created at 2023-07-01 12:34 +0000
1# remove when we don't support py38 anymore
2from __future__ import annotations
4import argparse
5import logging
6from typing import NoReturn
8from dotenv_cli import __VERSION__
9from dotenv_cli.core import run_dotenv
11logger = logging.getLogger(__name__)
14def parse_args(args: list[str] | None = None) -> argparse.Namespace:
15 """Parse arguments.
17 Paramters
18 ---------
19 args
20 This if for debugging only.
22 Returns
23 -------
24 argparse.Namespace
26 """
27 parser = argparse.ArgumentParser()
29 parser.add_argument(
30 "-e",
31 "--dotenv",
32 help="Alternative .env file",
33 default=".env",
34 )
36 parser.add_argument(
37 "command",
38 help="Shell command to execute",
39 nargs=argparse.REMAINDER,
40 )
42 parser.add_argument(
43 "--version",
44 action="version",
45 version=__VERSION__,
46 )
48 return parser.parse_args(args)
51def main() -> NoReturn | int:
52 """Run dotenv.
54 This function parses sys.argv and runs dotenv.
56 Returns
57 -------
58 int
59 the return value
61 """
62 args = parse_args()
63 if not args.command:
64 return 0
66 return run_dotenv(args.dotenv, args.command)