Coverage for src/su6_plugin_svelte_check/cli.py: 100%
26 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-17 17:28 +0200
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-17 17:28 +0200
1"""
2This module contains an example of both methods of adding commands to su6.
3"""
4from pathlib import Path
6from su6.plugins import PluginConfig, register, run_tool
8from .helpers import chdir, find_project_root
11@register
12class SvelteCheckPluginConfig(PluginConfig):
13 """
14 Config without state, loads [tool.su6.demo] from pyproject.toml into self.
15 """
17 strict: bool = False
18 tsconfig: str = "./tsconfig.json"
21config = SvelteCheckPluginConfig()
24@register
25def install_svelte_check(target_dir: str = None) -> int:
26 """
27 Install the svelte-check tool using npm.
28 """
29 target_dir = target_dir or "./"
31 with chdir(target_dir):
32 return run_tool("npm", "install", "svelte-check")
35@register(add_to_all=True)
36def svelte_check(strict: bool = None, tsconfig: str = None, node_modules: str = None) -> int:
37 """
38 Run the svelte-check tool.
39 """
40 config.update(strict=strict, tsconfig=tsconfig)
41 # svelte-check --tsconfig ./tsconfig.json --threshold error
43 node_modules = node_modules or "node_modules"
44 root, _ = find_project_root((node_modules,))
45 executable = str(root / "node_modules/svelte-check/bin/svelte-check")
47 args = []
48 if config.strict:
49 args.append("--fail-on-warnings")
50 else:
51 args.extend(["--threshold", "error"])
53 if Path(config.tsconfig).exists():
54 args.extend(["--tsconfig", config.tsconfig])
56 return run_tool(executable, *args)