Coverage for lice2/cli.py: 0%
25 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-08-19 14:24 +0100
« prev ^ index » next coverage.py v7.6.1, created at 2024-08-19 14:24 +0100
1"""Define the command-line interface for the `lice` package."""
3import argparse
4import re
5from datetime import datetime
6from pathlib import Path
8from lice2.constants import LANGS, LICENSES
9from lice2.helpers import guess_organization
12def get_args() -> argparse.Namespace:
13 """Set up the arg parsing and return it."""
15 def valid_year(string: str) -> str:
16 if not re.match(r"^\d{4}$", string):
17 message = "Must be a four-digit year"
18 raise argparse.ArgumentTypeError(message)
19 return string
21 parser = argparse.ArgumentParser(description="Generate a license")
23 parser.add_argument(
24 "license",
25 metavar="license",
26 nargs="?",
27 choices=LICENSES,
28 help=f"the license to generate, one of: {', '.join(LICENSES)}",
29 )
30 parser.add_argument(
31 "--header",
32 dest="header",
33 action="store_true",
34 help="generate source file header for specified license",
35 )
36 parser.add_argument(
37 "-o",
38 "--org",
39 dest="organization",
40 default=guess_organization(),
41 help='organization, defaults to .gitconfig or os.environ["USER"]',
42 )
43 parser.add_argument(
44 "-p",
45 "--proj",
46 dest="project",
47 default=Path.cwd().name,
48 help="name of project, defaults to name of current directory",
49 )
50 parser.add_argument(
51 "-t",
52 "--template",
53 dest="template_path",
54 help="path to license template file",
55 )
56 parser.add_argument(
57 "-y",
58 "--year",
59 dest="year",
60 type=valid_year,
61 default="%i" % datetime.now().date().year, # noqa: DTZ005
62 help="copyright year",
63 )
64 parser.add_argument(
65 "-l",
66 "--language",
67 dest="language",
68 help="format output for language source file, one of: "
69 f"{', '.join(LANGS.keys())} [default is not formatted (txt)]",
70 )
71 parser.add_argument(
72 "-f",
73 "--file",
74 dest="ofile",
75 default="stdout",
76 help="Name of the output source file (with -l, "
77 "extension can be ommitted)",
78 )
79 parser.add_argument(
80 "--vars",
81 dest="list_vars",
82 action="store_true",
83 help="list template variables for specified license",
84 )
85 parser.add_argument(
86 "--licenses",
87 dest="list_licenses",
88 action="store_true",
89 help="list available license templates and their parameters",
90 )
91 parser.add_argument(
92 "--languages",
93 dest="list_languages",
94 action="store_true",
95 help="list available source code formatting languages",
96 )
98 return parser.parse_args()