2023-12-26 15:56:00 -06:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
|
|
import json
|
|
|
|
|
import os
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
import urllib3
|
|
|
|
|
|
|
|
|
|
# Get latest version of selenium manager with sha256 values
|
|
|
|
|
# updates `//common:selenium_manager.bzl`
|
|
|
|
|
|
|
|
|
|
http = urllib3.PoolManager()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_url():
|
|
|
|
|
r = http.request(
|
2025-05-17 08:26:02 -04:00
|
|
|
"GET",
|
2025-05-28 19:49:45 -07:00
|
|
|
"https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/latest",
|
2023-12-26 15:56:00 -06:00
|
|
|
)
|
|
|
|
|
return r.url.replace("tag", "download")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_sha_json():
|
2025-05-17 08:26:02 -04:00
|
|
|
r = http.request(
|
|
|
|
|
"GET",
|
2025-05-28 19:49:45 -07:00
|
|
|
"https://raw.githubusercontent.com/SeleniumHQ/selenium_manager_artifacts/trunk/latest.json",
|
2025-05-17 08:26:02 -04:00
|
|
|
)
|
2023-12-26 15:56:00 -06:00
|
|
|
return json.loads(r.data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def print_linux(base_url, sha):
|
2025-05-17 08:26:02 -04:00
|
|
|
return """ http_file(
|
2023-12-26 15:56:00 -06:00
|
|
|
name = "download_sm_linux",
|
|
|
|
|
executable = True,
|
2026-01-22 08:19:55 -06:00
|
|
|
sha256 = "{}",
|
|
|
|
|
url = "{}",
|
2023-12-26 15:56:00 -06:00
|
|
|
)
|
|
|
|
|
|
2026-01-22 08:19:55 -06:00
|
|
|
""".format(sha, base_url + "/selenium-manager-linux")
|
2023-12-26 15:56:00 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def print_macos(base_url, sha):
|
2025-05-17 08:26:02 -04:00
|
|
|
return """ http_file(
|
2023-12-26 15:56:00 -06:00
|
|
|
name = "download_sm_macos",
|
|
|
|
|
executable = True,
|
2026-01-22 08:19:55 -06:00
|
|
|
sha256 = "{}",
|
|
|
|
|
url = "{}",
|
2023-12-26 15:56:00 -06:00
|
|
|
)
|
|
|
|
|
|
2026-01-22 08:19:55 -06:00
|
|
|
""".format(sha, base_url + "/selenium-manager-macos")
|
2023-12-26 15:56:00 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def print_windows(base_url, sha):
|
2025-05-17 08:26:02 -04:00
|
|
|
return """ http_file(
|
2023-12-26 15:56:00 -06:00
|
|
|
name = "download_sm_windows",
|
|
|
|
|
executable = True,
|
2026-01-22 08:19:55 -06:00
|
|
|
sha256 = "{}",
|
|
|
|
|
url = "{}",
|
2023-12-26 15:56:00 -06:00
|
|
|
)
|
2026-01-22 08:19:55 -06:00
|
|
|
""".format(sha, base_url + "/selenium-manager-windows.exe")
|
2023-12-26 15:56:00 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
content = """# This file has been generated using `bazel run scripts:selenium_manager`
|
|
|
|
|
|
|
|
|
|
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
|
|
|
|
|
|
|
|
|
|
def selenium_manager():
|
|
|
|
|
"""
|
|
|
|
|
base_url = get_url()
|
|
|
|
|
sha_dict = get_sha_json()
|
2025-05-17 08:26:02 -04:00
|
|
|
content = content + print_linux(base_url, sha_dict["linux"])
|
|
|
|
|
content = content + print_macos(base_url, sha_dict["macos"])
|
|
|
|
|
content = content + print_windows(base_url, sha_dict["windows"])
|
2024-03-22 17:52:19 -07:00
|
|
|
content += """
|
|
|
|
|
def _selenium_manager_artifacts_impl(_ctx):
|
|
|
|
|
selenium_manager()
|
|
|
|
|
|
|
|
|
|
selenium_manager_artifacts = module_extension(
|
|
|
|
|
implementation = _selenium_manager_artifacts_impl,
|
|
|
|
|
)
|
|
|
|
|
"""
|
2023-12-26 15:56:00 -06:00
|
|
|
|
|
|
|
|
current_script_dir = Path(os.path.realpath(__file__)).parent
|
|
|
|
|
target_file_path = current_script_dir.parent / "common/selenium_manager.bzl"
|
|
|
|
|
|
|
|
|
|
with open(target_file_path, "w") as file:
|
|
|
|
|
file.write(content)
|