|
9 | 9 | from webparsers.types import GitHubContentUrl |
10 | 10 |
|
11 | 11 | from codeplag.consts import ( |
| 12 | + DEFAULT_GENERAL_REPORT_NAME, |
12 | 13 | EXTENSION_CHOICE, |
| 14 | + LANGUAGE_CHOICE, |
13 | 15 | MODE_CHOICE, |
14 | 16 | REPORTS_EXTENSION_CHOICE, |
15 | 17 | UTIL_NAME, |
@@ -67,44 +69,20 @@ def __new__(cls, *args, **kwargs): |
67 | 69 | class CodeplagCLI(argparse.ArgumentParser): |
68 | 70 | """The argument parser of the codeplag util.""" |
69 | 71 |
|
70 | | - def __init__(self): |
71 | | - super(CodeplagCLI, self).__init__( |
72 | | - prog=UTIL_NAME, |
73 | | - formatter_class=argparse.ArgumentDefaultsHelpFormatter, |
74 | | - description="Program help to find similar parts of source " |
75 | | - "codes for the different languages.", |
76 | | - ) |
77 | | - self.add_argument( |
78 | | - "-v", |
79 | | - "--version", |
80 | | - help="Print current version number and exit.", |
81 | | - action="version", |
82 | | - version=f"{UTIL_NAME} {UTIL_VERSION}", |
83 | | - ) |
84 | | - self.add_argument( |
85 | | - "--verbose", |
86 | | - help="Show debug messages.", |
87 | | - action="store_true", |
88 | | - ) |
89 | | - |
90 | | - subparsers = self.add_subparsers( |
91 | | - help="Commands help.", |
92 | | - parser_class=argparse.ArgumentParser, |
93 | | - required=True, |
94 | | - metavar="COMMAND", |
95 | | - dest="root", |
96 | | - ) |
97 | | - |
| 72 | + def __add_settings_path(self, subparsers: argparse._SubParsersAction) -> None: |
98 | 73 | settings = subparsers.add_parser( |
99 | 74 | "settings", |
100 | 75 | help=f"Modifies and shows static settings of the '{UTIL_NAME}' util.", |
101 | 76 | ) |
| 77 | + |
102 | 78 | settings_commands = settings.add_subparsers( |
103 | 79 | help=f"Settings commands of the '{UTIL_NAME}' util.", |
104 | 80 | required=True, |
105 | 81 | metavar="COMMAND", |
106 | 82 | dest="settings", |
107 | 83 | ) |
| 84 | + |
| 85 | + # settings modify |
108 | 86 | settings_modify = settings_commands.add_parser( |
109 | 87 | "modify", |
110 | 88 | help=f"Manage the '{UTIL_NAME}' util settings.", |
@@ -149,12 +127,21 @@ def __init__(self): |
149 | 127 | choices=range(50, 100), |
150 | 128 | metavar="{50, 51, ..., 99}", |
151 | 129 | ) |
| 130 | + settings_modify.add_argument( |
| 131 | + "-l", |
| 132 | + "--language", |
| 133 | + help="The language of help messages, generated reports, errors.", |
| 134 | + type=str, |
| 135 | + choices=LANGUAGE_CHOICE, |
| 136 | + ) |
152 | 137 |
|
| 138 | + # settings show |
153 | 139 | settings_commands.add_parser( |
154 | 140 | "show", |
155 | 141 | help=f"Show the '{UTIL_NAME}' util settings.", |
156 | 142 | ) |
157 | 143 |
|
| 144 | + def __add_check_path(self, subparsers: argparse._SubParsersAction) -> None: |
158 | 145 | check = subparsers.add_parser("check", help="Start searching similar works.") |
159 | 146 | check.add_argument( |
160 | 147 | "-d", |
@@ -239,3 +226,64 @@ def __init__(self): |
239 | 226 | action=CheckUniqueStore, |
240 | 227 | default=[], |
241 | 228 | ) |
| 229 | + |
| 230 | + def __add_report_path(self, subparsers: argparse._SubParsersAction) -> None: |
| 231 | + report = subparsers.add_parser( |
| 232 | + "report", |
| 233 | + help=f"Handling generated by the {UTIL_NAME} reports as creating html " |
| 234 | + "report file or show it on console.", |
| 235 | + ) |
| 236 | + |
| 237 | + report_commands = report.add_subparsers( |
| 238 | + help=f"Report commands of the '{UTIL_NAME}' util.", |
| 239 | + required=True, |
| 240 | + metavar="COMMAND", |
| 241 | + dest="report", |
| 242 | + ) |
| 243 | + |
| 244 | + # report create |
| 245 | + report_create = report_commands.add_parser( |
| 246 | + "create", |
| 247 | + help="Generate general report from created some time ago report files.", |
| 248 | + ) |
| 249 | + report_create.add_argument( |
| 250 | + "-p", |
| 251 | + "--path", |
| 252 | + help="Path to save generated general report. " |
| 253 | + "If it's directory, than creates file in it with " |
| 254 | + f"name '{DEFAULT_GENERAL_REPORT_NAME}'.", |
| 255 | + required=True, |
| 256 | + type=Path, |
| 257 | + ) |
| 258 | + |
| 259 | + def __init__(self): |
| 260 | + super(CodeplagCLI, self).__init__( |
| 261 | + prog=UTIL_NAME, |
| 262 | + formatter_class=argparse.ArgumentDefaultsHelpFormatter, |
| 263 | + description="Program help to find similar parts of source " |
| 264 | + "codes for the different languages.", |
| 265 | + ) |
| 266 | + self.add_argument( |
| 267 | + "-v", |
| 268 | + "--version", |
| 269 | + help="Print current version number and exit.", |
| 270 | + action="version", |
| 271 | + version=f"{UTIL_NAME} {UTIL_VERSION}", |
| 272 | + ) |
| 273 | + self.add_argument( |
| 274 | + "--verbose", |
| 275 | + help="Show debug messages.", |
| 276 | + action="store_true", |
| 277 | + ) |
| 278 | + |
| 279 | + subparsers = self.add_subparsers( |
| 280 | + help="Commands help.", |
| 281 | + parser_class=argparse.ArgumentParser, |
| 282 | + required=True, |
| 283 | + metavar="COMMAND", |
| 284 | + dest="root", |
| 285 | + ) |
| 286 | + |
| 287 | + self.__add_settings_path(subparsers) |
| 288 | + self.__add_check_path(subparsers) |
| 289 | + self.__add_report_path(subparsers) |
0 commit comments