aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/testing/custom_linter_util/linter_params.py
diff options
context:
space:
mode:
authoralevitskii <alevitskii@yandex-team.com>2024-11-14 09:02:30 +0300
committeralevitskii <alevitskii@yandex-team.com>2024-11-14 09:14:07 +0300
commit14559389ace814f895db4ee116d884ae70bc7469 (patch)
tree5a8647173c6438875441a01e63593cd4ef708c88 /library/python/testing/custom_linter_util/linter_params.py
parent8d4c37b7de13075dfe40beb41c1f807d4754de00 (diff)
downloadydb-14559389ace814f895db4ee116d884ae70bc7469.tar.gz
Add external autoincludes.json
Add external autoincludes.json commit_hash:1b3de1732fee590582ae5620570facc2c0987390
Diffstat (limited to 'library/python/testing/custom_linter_util/linter_params.py')
-rw-r--r--library/python/testing/custom_linter_util/linter_params.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/library/python/testing/custom_linter_util/linter_params.py b/library/python/testing/custom_linter_util/linter_params.py
new file mode 100644
index 0000000000..522e6da9ed
--- /dev/null
+++ b/library/python/testing/custom_linter_util/linter_params.py
@@ -0,0 +1,81 @@
+import argparse
+import json
+from dataclasses import dataclass
+from typing import Optional
+
+
+@dataclass
+class LinterArgs:
+ source_root: str
+ project_path: str
+ output_path: str
+ lint_name: str
+ depends: dict[str, str]
+ global_resources: dict[str, str]
+ configs: list[str]
+ extra_params: dict[str, str]
+ report_file: str
+ files: list[str]
+
+
+def get_params(raw_args: Optional[list[str]] = None) -> LinterArgs:
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--params")
+ parser.add_argument("--source-root")
+ parser.add_argument("--project-path")
+ parser.add_argument("--output-path")
+ parser.add_argument("--lint-name", default="")
+ parser.add_argument("--depends", action="append")
+ parser.add_argument("--global-resource", action="append", dest="global_resources")
+ parser.add_argument("--config", action="append", dest="configs")
+ parser.add_argument("--extra-param", action="append", dest="extra_params")
+ parser.add_argument("--report-file", default="-")
+ parser.add_argument("files", nargs="*")
+ args = parser.parse_args(raw_args)
+
+ if args.params:
+ with open(args.params) as f:
+ params = json.load(f)
+ source_root = params["source_root"]
+ project_path = params["project_path"]
+ output_path = params["output_path"]
+ lint_name = params.get("lint_name", "")
+ depends = params.get("depends", {})
+ global_resources = params.get("global_resources", {})
+ configs = params.get("configs", [])
+ extra_params = params.get("extra_params", {})
+ report_file = params["report_file"]
+ files = params["files"]
+ else:
+ source_root = args.source_root
+ project_path = args.project_path
+ output_path = args.output_path
+ lint_name = args.lint_name
+ depends = _parse_kv_arg(args.depends, ":")
+ global_resources = _parse_kv_arg(args.global_resources, ":")
+ configs = args.configs if args.configs else []
+ extra_params = _parse_kv_arg(args.extra_params, "=")
+ report_file = args.report_file
+ files = args.files
+
+ return LinterArgs(
+ source_root=source_root,
+ project_path=project_path,
+ output_path=output_path,
+ lint_name=lint_name,
+ depends=depends,
+ global_resources=global_resources,
+ configs=configs,
+ extra_params=extra_params,
+ report_file=report_file,
+ files=files,
+ )
+
+
+def _parse_kv_arg(arg, sep):
+ result = {}
+ if arg:
+ for item in arg:
+ var, val = item.split(sep, 1)
+ result[var] = val
+ return result