tools: Moved TOOLS_FOR_EXTENSIONS into tools.toml

- Now a tool can be added/removed by editing one file.
This commit is contained in:
Andrew Hamilton 2018-05-18 13:04:08 +10:00
parent 915eac35ba
commit f414cc4a96
3 changed files with 31 additions and 30 deletions

View file

@ -218,7 +218,7 @@ class ToolsTestCase(unittest.TestCase):
self._test_tool(tools.php7_syntax, [("root.php", tools.Status.ok)])
def test_pil(self):
for extension in tools.IMAGE_EXTENSIONS:
for extension in ["png", "jpg", "gif", "bmp", "ppm", "tiff", "tga"]:
self._test_tool(tools.pil, [("circle." + extension,
tools.Status.normal)])

View file

@ -648,6 +648,8 @@ def make_tool_function(dependencies, url, command, success_status=None,
tools_toml_path = os.path.join(os.path.dirname(__file__), "tools.toml")
with open(tools_toml_path) as tools_toml_file:
tools_toml = toml.load(tools_toml_file)
tools_for_extensions = tools_toml["tools_for_extensions"]
del tools_toml["tools_for_extensions"]
for tool_name, tool_toml in tools_toml.items():
tool_func = make_tool_function(**tool_toml)
tool_func.__name__ = tool_func.__qualname__ = tool_name
@ -780,33 +782,10 @@ def generic_tools():
return [contents, metadata]
IMAGE_EXTENSIONS = ["png", "jpg", "gif", "bmp", "ppm", "tiff", "tga"]
TOOLS_FOR_EXTENSIONS = \
[
(["py"], [python_syntax, python_unittests, pydoc, mypy,
python_coverage, pycodestyle, pyflakes, pylint, python_gut,
python_modulefinder, dis, python_mccabe, bandit]),
# (["pyc"], [pydisasm]),
(["pl", "pm", "t"], [perl_syntax, perldoc, perltidy]),
# (["p6", "pm6"], [perl6_syntax, perldoc]),
(["pod", "pod6"], [perldoc]),
(["java"], [uncrustify]),
(["c", "h"], [c_syntax_gcc, splint, uncrustify, cppcheck]),
(["o"], [objdump_headers, objdump_disassemble, readelf]),
(["cc", "cpp", "hpp"], [cpp_syntax_gcc, bcpp, uncrustify, cppcheck]),
(["pdf"], [pdf2txt]),
(["html"], [html_syntax, tidy, html2text]),
(["php"], [php7_syntax]),
(["zip"], [unzip]),
(["tar.gz", "tgz"], [tar_gz]),
(["tar.bz2"], [tar_bz2]),
(["a", "so"], [nm]),
(IMAGE_EXTENSIONS, [pil, pil_half]),
(["bash", "sh", "dash", "ksh"], [shellcheck]),
(["go"], [gofmt, go_vet, godoc])
]
TOOLS_FOR_EXTENSIONS = []
for extensions, tool_names in tools_for_extensions:
TOOLS_FOR_EXTENSIONS.append(
(extensions, [globals()[tool_name] for tool_name in tool_names]))
@functools.lru_cache(maxsize=1)

View file

@ -1,6 +1,29 @@
tools_for_extensions = [
[["py"], ["python_syntax", "python_unittests", "pydoc", "mypy",
"python_coverage", "pycodestyle", "pyflakes", "pylint",
"python_gut", "python_modulefinder", "dis", "python_mccabe",
"bandit"]],
# [["pyc"], ["pydisasm"]],
[["pl", "pm", "t"], ["perl_syntax", "perldoc", "perltidy"]],
# [["p6", "pm6"], ["perl6_syntax", "perldoc"]],
[["pod", "pod6"], ["perldoc"]], [["java"], ["uncrustify"]],
[["c", "h"], ["c_syntax_gcc", "splint", "uncrustify", "cppcheck"]],
[["o"], ["objdump_headers", "objdump_disassemble", "readelf"]],
[["cc", "cpp", "hpp"], ["cpp_syntax_gcc", "bcpp", "uncrustify",
"cppcheck"]],
[["pdf"], ["pdf2txt"]],
[["html"], ["html_syntax", "tidy", "html2text"]],
[["php"], ["php7_syntax"]],
[["zip"], ["unzip"]],
[["tar.gz", "tgz"],["tar_gz"]],
[["tar.bz2"], ["tar_bz2"]],
[["a", "so"], ["nm"]],
[["png", "jpg", "gif", "bmp", "ppm", "tiff", "tga"], ["pil", "pil_half"]],
[["bash", "sh", "dash", "ksh"], ["shellcheck"]],
[["go"], ["gofmt", "go_vet", "godoc"]]]
# Template:
# Tool template:
# []
# dependencies = [""]
# url = ""
@ -8,7 +31,6 @@
# success_status = ""
# error_status = ""
[objdump_headers]
dependencies = ["binutils"]
url = "https://en.wikipedia.org/wiki/Objdump"