fetch_latest_versions.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # Copyright 2021-2024 Avaiga Private Limited
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  4. # the License. You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  9. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  10. # specific language governing permissions and limitations under the License.
  11. import sys
  12. import requests # type: ignore
  13. def fetch_latest_releases_from_github(dev=False, target_version="", target_package=""):
  14. releases = {}
  15. url = "https://api.github.com/repos/Avaiga/taipy/releases"
  16. response = requests.get(url)
  17. resp_json = response.json()
  18. for rel in resp_json:
  19. tag = rel["tag_name"]
  20. if not dev and ".dev" in tag:
  21. continue
  22. if "config" in tag:
  23. releases["config"] = releases.get("config") or tag.split("-")[0]
  24. elif "core" in tag:
  25. releases["core"] = releases.get("core") or tag.split("-")[0]
  26. elif "gui" in tag:
  27. releases["gui"] = releases.get("gui") or tag.split("-")[0]
  28. elif "rest" in tag:
  29. releases["rest"] = releases.get("rest") or tag.split("-")[0]
  30. elif "templates" in tag:
  31. releases["templates"] = releases.get("templates") or tag.split("-")[0]
  32. releases[target_package] = target_version
  33. return releases
  34. def fetch_latest_releases_from_pypi(dev=False, target_version="", target_package=""):
  35. releases = {}
  36. for pkg in ["config", "core", "gui", "rest", "templates"]:
  37. url = f"https://pypi.org/pypi/taipy-{pkg}/json"
  38. response = requests.get(url)
  39. resp_json = response.json()
  40. versions = list(resp_json["releases"].keys())
  41. versions.reverse()
  42. for ver in versions:
  43. if not dev and ".dev" in ver:
  44. continue
  45. releases[pkg] = ver
  46. break
  47. releases[target_package] = target_version
  48. return releases
  49. if __name__ == "__main__":
  50. is_dev_version = sys.argv[1] == "dev"
  51. is_pypi = sys.argv[2] == "true"
  52. target_version = sys.argv[3]
  53. target_package = sys.argv[4]
  54. if is_dev_version and ".dev" not in target_version:
  55. raise Exception("Version does not contain suffix .dev")
  56. versions = {}
  57. if not is_pypi:
  58. versions = fetch_latest_releases_from_github(is_dev_version, target_version, target_package)
  59. else:
  60. versions = fetch_latest_releases_from_pypi(is_dev_version, target_version, target_package)
  61. for name, version in versions.items():
  62. print(f"{name}_VERSION={version}") # noqa: T201