123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # Copyright 2021-2025 Avaiga Private Limited
- #
- # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- # the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- # specific language governing permissions and limitations under the License.
- import hashlib
- import os
- import sys
- ignore_folder = ["node_modules", "dist", "coverage", "build", "scripts", "test-config"]
- ignore_file_name = [
- "DS_Store",
- "env.local",
- "env.development.local",
- "env.test.local",
- "env.production.local",
- ".eslintrc.js",
- ".gitignore",
- "jest.config.js",
- "typedoc-mkdocs.json",
- ".env",
- "dev.env",
- ]
- ignore_file_extension = [".md"]
- def hash_file(file_path):
- hasher = hashlib.sha256()
- with open(file_path, "rb") as f:
- buf = f.read()
- hasher.update(buf)
- return hasher.hexdigest()
- def hash_files_in_frontend_folder(frontend_folder):
- combined_hasher = hashlib.sha256()
- file_hashes = {}
- lookup_fe_folder = [f"{frontend_folder}{os.sep}taipy", f"{frontend_folder}{os.sep}taipy-gui"]
- if len(sys.argv) > 1:
- if sys.argv[1] == "--taipy-gui-only":
- lookup_fe_folder.pop(0)
- elif sys.argv[1] == "--taipy-gui-core-only":
- lookup_fe_folder.pop(1)
- for root_folder in lookup_fe_folder:
- # Sort before looping to ensure consistent cache key
- for root, _, files in sorted(os.walk(root_folder)):
- if any(ignore in root for ignore in ignore_folder):
- continue
- # Sort before looping to ensure consistent cache key
- for file in sorted(files):
- if any(ignore in file for ignore in ignore_file_name):
- continue
- if any(file.endswith(ignore) for ignore in ignore_file_extension):
- continue
- file_path = os.path.join(root, file)
- file_hash = hash_file(file_path)
- file_hashes[file_path] = file_hash
- combined_hasher.update(file_hash.encode())
- combined_hash = combined_hasher.hexdigest()
- return file_hashes, combined_hash
- if __name__ == "__main__":
- frontend_folder = "frontend"
- file_hashes, combined_hash = hash_files_in_frontend_folder(frontend_folder)
- # for path, file_hash in sorted(file_hashes.items()):
- # print(f"{path}: {file_hash}")
- print(f"Taipy Frontend hash {combined_hash}") # noqa: T201
- # write combined hash to file
- with open("hash.txt", "w") as f:
- f.write(combined_hash)
|