Skip to content

Commit 09d0961

Browse files
committed
Revert "[nrf noup] ZAP west command improvements"
This reverts commit 99505eb. Signed-off-by: Adrian Gielniewski <adrian.gielniewski@nordicsemi.no>
1 parent 922013a commit 09d0961

File tree

3 files changed

+27
-61
lines changed

3 files changed

+27
-61
lines changed

scripts/west/zap_common.py

+18-48
Original file line numberDiff line numberDiff line change
@@ -12,49 +12,29 @@
1212
import tempfile
1313
import wget
1414

15-
from collections import deque
1615
from pathlib import Path
1716
from typing import Tuple
1817
from zipfile import ZipFile
1918

2019
from west import log
2120

22-
DEFAULT_MATTER_PATH = Path(__file__).parents[2]
21+
MATTER_PATH = Path(__file__).parents[2]
2322

2423

25-
def find_zap(root: Path = Path.cwd(), max_depth: int = 2):
24+
def find_zap(root: Path = Path.cwd(), max_depth: int = 1):
2625
"""
2726
Find *.zap file in the given directory or its subdirectories.
2827
"""
29-
zap_files = []
30-
search_dirs = deque()
31-
search_dirs.append((root, max_depth))
32-
33-
while search_dirs:
34-
search_dir, max_depth = search_dirs.popleft()
35-
36-
for name in search_dir.iterdir():
37-
if name.is_file() and (name.suffix.lower() == '.zap'):
38-
zap_files.append(search_dir / name)
39-
continue
40-
if name.is_dir() and (max_depth > 0):
41-
search_dirs.append((search_dir / name, max_depth - 1))
42-
43-
# At most one ZAP file found in the selected location, return immediately.
44-
if len(zap_files) <= 1:
45-
return zap_files[0] if zap_files else None
46-
47-
# Otherwise, ask a user to choose the ZAP file to edit.
48-
for i, zap_file in enumerate(zap_files):
49-
print(f'{i}. {zap_file.relative_to(root)}')
50-
51-
while True:
52-
try:
53-
maxind = len(zap_files) - 1
54-
prompt = f'Select file to edit (0-{maxind}): '
55-
return zap_files[int(input(prompt))]
56-
except Exception:
57-
pass
28+
subdirs = []
29+
for name in root.iterdir():
30+
if name.is_file() and (name.suffix.lower() == '.zap'):
31+
return root / name
32+
if name.is_dir() and (max_depth > 0):
33+
subdirs.append(name)
34+
for subdir in subdirs:
35+
if zap := find_zap(root / subdir, max_depth - 1):
36+
return zap
37+
return None
5838

5939

6040
def existing_file_path(arg: str) -> Path:
@@ -67,16 +47,6 @@ def existing_file_path(arg: str) -> Path:
6747
raise argparse.ArgumentTypeError(f'invalid file path: \'{arg}\'')
6848

6949

70-
def existing_dir_path(arg: str) -> Path:
71-
"""
72-
Helper function to validate directory path argument.
73-
"""
74-
p = Path(arg)
75-
if p.is_dir():
76-
return p
77-
raise argparse.ArgumentTypeError(f'invalid directory path: \'{arg}\'')
78-
79-
8050
class ZapInstaller:
8151
INSTALL_DIR = Path('.zap-install')
8252
ZAP_URL_PATTERN = 'https://github.com/project-chip/zap/releases/download/v%04d.%02d.%02d-nightly/%s.zip'
@@ -201,15 +171,15 @@ def update_zap_if_needed(self) -> None:
201171
recommended_version = self.get_recommended_version()
202172
current_version = self.get_current_version()
203173

204-
log.inf(f'ZAP installation directory: {self.install_path}')
174+
if current_version == recommended_version:
175+
log.inf('ZAP is up to date: {0}.{1}.{2}'.format(*recommended_version))
176+
return
205177

206178
if current_version:
207-
verdict = 'up to date' if current_version == recommended_version else 'outdated'
208-
log.inf('Found ZAP {}.{}.{} ({})'.format(*current_version, verdict))
179+
log.inf('Found ZAP version: {0}.{1}.{2}'.format(*current_version))
209180

210-
if current_version != recommended_version:
211-
log.inf('Installing ZAP {}.{}.{}'.format(*recommended_version))
212-
self.install_zap(recommended_version)
181+
log.inf('Installing ZAP version: {0}.{1}.{2}'.format(*recommended_version))
182+
self.install_zap(recommended_version)
213183

214184
@staticmethod
215185
def set_exec_permission(path: Path) -> None:

scripts/west/zap_generate.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from west import log
1313
from west.commands import CommandError, WestCommand
1414

15-
from zap_common import existing_file_path, existing_dir_path, find_zap, ZapInstaller, DEFAULT_MATTER_PATH
15+
from zap_common import existing_file_path, find_zap, ZapInstaller, MATTER_PATH
1616

1717

1818
class ZapGenerate(WestCommand):
@@ -35,8 +35,6 @@ def do_add_parser(self, parser_adder):
3535
help='Path to data model configuration file (*.zap)')
3636
parser.add_argument('-o', '--output', type=Path,
3737
help='Path where to store the generated files')
38-
parser.add_argument('-m', '--matter-path', type=existing_dir_path,
39-
default=DEFAULT_MATTER_PATH, help='Path to Matter SDK')
4038
return parser
4139

4240
def do_run(self, args, unknown_args):
@@ -53,10 +51,10 @@ def do_run(self, args, unknown_args):
5351
else:
5452
output_path = zap_file_path.parent / "zap-generated"
5553

56-
app_templates_path = args.matter_path / "src/app/zap-templates/app-templates.json"
57-
zap_generate_path = args.matter_path / "scripts/tools/zap/generate.py"
54+
app_templates_path = MATTER_PATH / "src/app/zap-templates/app-templates.json"
55+
zap_generate_path = MATTER_PATH / "scripts/tools/zap/generate.py"
5856

59-
zap_installer = ZapInstaller(args.matter_path)
57+
zap_installer = ZapInstaller(MATTER_PATH)
6058
zap_installer.update_zap_if_needed()
6159

6260
# make sure that the generate.py script uses the proper zap_cli binary (handled by west)

scripts/west/zap_gui.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
import argparse
66

7+
from pathlib import Path
78
from textwrap import dedent
89

10+
from zap_common import existing_file_path, find_zap, ZapInstaller, MATTER_PATH
911
from west.commands import WestCommand
1012

11-
from zap_common import existing_file_path, existing_dir_path, find_zap, ZapInstaller, DEFAULT_MATTER_PATH
12-
1313

1414
class ZapGui(WestCommand):
1515

@@ -33,8 +33,6 @@ def do_add_parser(self, parser_adder):
3333
help='Path to data model configuration file (*.zap)')
3434
parser.add_argument('-j', '--zcl-json', type=existing_file_path,
3535
help='Path to data model definition file (zcl.json)')
36-
parser.add_argument('-m', '--matter-path', type=existing_dir_path,
37-
default=DEFAULT_MATTER_PATH, help='Path to Matter SDK')
3836
return parser
3937

4038
def do_run(self, args, unknown_args):
@@ -46,11 +44,11 @@ def do_run(self, args, unknown_args):
4644
if args.zcl_json:
4745
zcl_json_path = args.zcl_json.absolute()
4846
else:
49-
zcl_json_path = args.matter_path / 'src/app/zap-templates/zcl/zcl.json'
47+
zcl_json_path = MATTER_PATH / 'src/app/zap-templates/zcl/zcl.json'
5048

51-
app_templates_path = args.matter_path / 'src/app/zap-templates/app-templates.json'
49+
app_templates_path = MATTER_PATH / 'src/app/zap-templates/app-templates.json'
5250

53-
zap_installer = ZapInstaller(args.matter_path)
51+
zap_installer = ZapInstaller(Path(MATTER_PATH))
5452
zap_installer.update_zap_if_needed()
5553
zap_cache_path = zap_installer.get_install_path() / ".zap"
5654

0 commit comments

Comments
 (0)