Skip to content

Commit 4098c53

Browse files
lucasssvazgithub-actions[bot]pre-commit-ci-lite[bot]
authored
fix(get.py): Add version checking for installed tools (#10160)
* fix(get.py): Add version checking of installed tools * change(tools): Push generated binaries to PR * Fix for different file formats * change(tools): Push generated binaries to PR * fix paths * change(tools): Push generated binaries to PR * Move to using checksum * change(tools): Push generated binaries to PR * Clean code * change(tools): Push generated binaries to PR * Add checksum check for libs * change(tools): Push generated binaries to PR * ci(pre-commit): Apply automatic fixes * change(tools): Push generated binaries to PR --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent c7ac06c commit 4098c53

File tree

2 files changed

+45
-17
lines changed

2 files changed

+45
-17
lines changed

Diff for: tools/get.exe

-86.5 KB
Binary file not shown.

Diff for: tools/get.py

+45-17
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,36 @@ def verify_files(filename, destination, rename_to):
147147
return True
148148

149149

150-
def unpack(filename, destination, force_extract): # noqa: C901
150+
def is_latest_version(destination, dirname, rename_to, cfile, checksum):
151+
current_version = None
152+
expected_version = None
153+
154+
try:
155+
expected_version = checksum
156+
with open(os.path.join(destination, rename_to, ".package_checksum"), "r") as f:
157+
current_version = f.read()
158+
159+
if verbose:
160+
print(f"\nTool: {rename_to}")
161+
print(f"Current version: {current_version}")
162+
print(f"Expected version: {expected_version}")
163+
164+
if current_version and current_version == expected_version:
165+
if verbose:
166+
print("Latest version already installed. Skipping extraction")
167+
return True
168+
169+
if verbose:
170+
print("New version detected")
171+
172+
except Exception as e:
173+
if verbose:
174+
print(f"Falied to verify version for {rename_to}: {e}")
175+
176+
return False
177+
178+
179+
def unpack(filename, destination, force_extract, checksum): # noqa: C901
151180
dirname = ""
152181
cfile = None # Compressed file
153182
file_is_corrupted = False
@@ -196,11 +225,11 @@ def unpack(filename, destination, force_extract): # noqa: C901
196225
rename_to = "esp32-arduino-libs"
197226

198227
if not force_extract:
199-
if verify_files(filename, destination, rename_to):
200-
print(" Files ok. Skipping Extraction")
201-
return True
202-
else:
203-
print(" Extracting archive...")
228+
if is_latest_version(destination, dirname, rename_to, cfile, checksum):
229+
if verify_files(filename, destination, rename_to):
230+
print(" Files ok. Skipping Extraction")
231+
return True
232+
print(" Extracting archive...")
204233
else:
205234
print(" Forcing extraction")
206235

@@ -225,6 +254,9 @@ def unpack(filename, destination, force_extract): # noqa: C901
225254
shutil.rmtree(rename_to)
226255
shutil.move(dirname, rename_to)
227256

257+
with open(os.path.join(destination, rename_to, ".package_checksum"), "w") as f:
258+
f.write(checksum)
259+
228260
if verify_files(filename, destination, rename_to):
229261
print(" Files extracted successfully.")
230262
return True
@@ -324,11 +356,11 @@ def get_tool(tool, force_download, force_extract):
324356
print("Tool {0} already downloaded".format(archive_name))
325357
sys.stdout.flush()
326358

327-
if "esp32-arduino-libs" not in archive_name and sha256sum(local_path) != checksum:
359+
if sha256sum(local_path) != checksum:
328360
print("Checksum mismatch for {0}".format(archive_name))
329361
return False
330362

331-
return unpack(local_path, ".", force_extract)
363+
return unpack(local_path, ".", force_extract, checksum)
332364

333365

334366
def load_tools_list(filename, platform):
@@ -379,21 +411,17 @@ def identify_platform():
379411
if __name__ == "__main__":
380412
parser = argparse.ArgumentParser(description="Download and extract tools")
381413

382-
parser.add_argument("-v", "--verbose", type=bool, default=False, required=False, help="Print verbose output")
414+
parser.add_argument("-v", "--verbose", action="store_true", required=False, help="Print verbose output")
383415

384-
parser.add_argument(
385-
"-d", "--force_download", type=bool, default=False, required=False, help="Force download of tools"
386-
)
416+
parser.add_argument("-d", "--force_download", action="store_true", required=False, help="Force download of tools")
387417

388-
parser.add_argument(
389-
"-e", "--force_extract", type=bool, default=False, required=False, help="Force extraction of tools"
390-
)
418+
parser.add_argument("-e", "--force_extract", action="store_true", required=False, help="Force extraction of tools")
391419

392420
parser.add_argument(
393-
"-f", "--force_all", type=bool, default=False, required=False, help="Force download and extraction of tools"
421+
"-f", "--force_all", action="store_true", required=False, help="Force download and extraction of tools"
394422
)
395423

396-
parser.add_argument("-t", "--test", type=bool, default=False, required=False, help=argparse.SUPPRESS)
424+
parser.add_argument("-t", "--test", action="store_true", required=False, help=argparse.SUPPRESS)
397425

398426
args = parser.parse_args()
399427

0 commit comments

Comments
 (0)