Coverage for dotenv_cli/cli.py: 94%

18 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-12-06 13:26 +0000

1# remove when we don't support py38 anymore 

2from __future__ import annotations 

3 

4import argparse 

5import logging 

6from typing import NoReturn 

7 

8from dotenv_cli import __VERSION__ 

9from dotenv_cli.core import run_dotenv 

10 

11logger = logging.getLogger(__name__) 

12 

13 

14def parse_args(args: list[str] | None = None) -> argparse.Namespace: 

15 """Parse arguments. 

16 

17 Paramters 

18 --------- 

19 args 

20 This if for debugging only. 

21 

22 Returns 

23 ------- 

24 argparse.Namespace 

25 

26 """ 

27 parser = argparse.ArgumentParser() 

28 

29 parser.add_argument( 

30 "-e", 

31 "--dotenv", 

32 help="Alternative .env file", 

33 default=".env", 

34 ) 

35 

36 parser.add_argument( 

37 "command", 

38 help="Shell command to execute", 

39 nargs=argparse.REMAINDER, 

40 ) 

41 

42 parser.add_argument( 

43 "--version", 

44 action="version", 

45 version=__VERSION__, 

46 ) 

47 

48 return parser.parse_args(args) 

49 

50 

51def main() -> NoReturn | int: 

52 """Run dotenv. 

53 

54 This function parses sys.argv and runs dotenv. 

55 

56 Returns 

57 ------- 

58 int 

59 the return value 

60 

61 """ 

62 args = parse_args() 

63 if not args.command: 

64 return 0 

65 

66 return run_dotenv(args.dotenv, args.command)