1
0
Fork 0
mirror of https://github.com/ansible-collections/hetzner.hcloud.git synced 2026-02-04 08:01:49 +00:00
hetzner.hcloud/scripts/vendor.py
renovate[bot] 977c3173c8
chore(deps): update pre-commit hook psf/black-pre-commit-mirror to v26 (#790)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[psf/black-pre-commit-mirror](https://redirect.github.com/psf/black-pre-commit-mirror)
| repository | major | `25.12.0` → `26.1.0` |

Note: The `pre-commit` manager in Renovate is not supported by the
`pre-commit` maintainers or community. Please do not report any problems
there, instead [create a Discussion in the Renovate
repository](https://redirect.github.com/renovatebot/renovate/discussions/new)
if you have any questions.

---

### Release Notes

<details>
<summary>psf/black-pre-commit-mirror
(psf/black-pre-commit-mirror)</summary>

###
[`v26.1.0`](https://redirect.github.com/psf/black-pre-commit-mirror/compare/25.12.0...26.1.0)

[Compare
Source](https://redirect.github.com/psf/black-pre-commit-mirror/compare/25.12.0...26.1.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ansible-collections/hetzner.hcloud).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-19 09:18:18 +01:00

99 lines
2.9 KiB
Python
Executable file

#!/usr/bin/env python3
"""
Fetch and bundles the hcloud package inside the collection.
Fetch the desired version `HCLOUD_VERSION` from https://github.com/hetznercloud/hcloud-python
`HCLOUD_SOURCE_URL` using git, apply some code modifications to comply with ansible,
move the modified files at the vendor location `HCLOUD_VENDOR_PATH`.
"""
from __future__ import annotations
import logging
import re
from argparse import ArgumentParser
from pathlib import Path
from shutil import move, rmtree
from subprocess import check_call
from tempfile import TemporaryDirectory
from textwrap import dedent
logger = logging.getLogger("vendor")
HCLOUD_SOURCE_URL = "https://github.com/hetznercloud/hcloud-python"
HCLOUD_VERSION = "v2.15.0"
HCLOUD_VENDOR_PATH = "plugins/module_utils/_vendor/hcloud"
def apply_code_modifications(source_path: Path):
for file in source_path.rglob("*.py"):
content = file.read_text()
content_orig = content
# Wrap requests imports
content = re.sub(
r"import requests",
dedent(r"""
try:
import requests
except ImportError:
requests = None
""").strip(),
content,
)
# Wrap dateutil imports
content = re.sub(
r"from dateutil.parser import isoparse",
dedent(r"""
try:
from dateutil.parser import isoparse
except ImportError:
isoparse = None
""").strip(),
content,
)
# Remove requests.Response typings
content = re.sub(
r": requests\.Response",
r"",
content,
)
if content != content_orig:
logger.info("Applied code modifications on %s", file)
file.write_text(content)
def main(check: bool = False) -> int:
with TemporaryDirectory() as tmp_dir:
tmp_dir_path = Path(tmp_dir)
logger.info("Created temporary directory %s", tmp_dir_path)
check_call(["git", "clone", "--depth=1", "--branch", HCLOUD_VERSION, HCLOUD_SOURCE_URL, tmp_dir_path])
logger.info("Cloned the source files in %s", tmp_dir_path)
apply_code_modifications(tmp_dir_path / "hcloud")
logger.info("Applied code modifications on the source files")
rmtree(HCLOUD_VENDOR_PATH)
move(tmp_dir_path / "hcloud", HCLOUD_VENDOR_PATH)
logger.info("Bundled the modified sources files in the collection")
if check:
check_call(["git", "diff", "--exit-code", "--", HCLOUD_VENDOR_PATH])
return 0
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, format="%(levelname)-8s: %(message)s")
parser = ArgumentParser()
parser.add_argument("--check", action="store_true", default=False)
args = parser.parse_args()
raise SystemExit(main(check=args.check))