2025-10-30 11:13:38 +01:00

86 lines
2.4 KiB
Python

# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2025 Felix Fontein <felix@fontein.de>
# /// script
# dependencies = ["nox>=2025.02.09", "antsibull-nox"]
# ///
import os
import sys
import urllib.request
from pathlib import Path
import nox
try:
import antsibull_nox
import antsibull_nox.sessions
except ImportError:
print("You need to install antsibull-nox in the same Python environment as nox.")
sys.exit(1)
IN_CI = os.environ.get("CI") == "true"
antsibull_nox.load_antsibull_nox_toml()
@nox.session(name="update-docs-fragments", default=True)
def update_docs_fragments(session: nox.Session) -> None:
"""
Update/check auto-generated parts of docs fragments.
"""
session.install("ansible-core")
prepare = antsibull_nox.sessions.prepare_collections(
session, install_in_site_packages=True
)
if not prepare:
return
data = ["python", "tests/update-docs-fragments.py"]
if IN_CI:
data.append("--lint")
session.run(*data)
@nox.session(name="update-psl", default=False, python=False)
def update_psl(session: nox.Session) -> None:
# Sometimes the version on publicsuffix.org differs depending on from where you request it over many hours,
# so for now let's directly fetch it from GitHub.
# url = 'https://publicsuffix.org/list/public_suffix_list.dat'
url = "https://raw.githubusercontent.com/publicsuffix/list/main/public_suffix_list.dat"
filename = "plugins/public_suffix_list.dat"
# Download file
urllib.request.urlretrieve(url, filename)
output = session.run("git", "status", "--porcelain=v1", filename, silent=True)
if output is None:
# The run was skipped
return
if output == "":
print("PSL is up-to-date!")
return
if IN_CI:
session.error("PSL is not up-to-date! Run 'nox -e update-psl'!")
return
fragment = Path("changelogs", "fragments", "update-psl.yml")
if not fragment.exists():
fragment.write_text(
r"""bugfixes:
- "Update Public Suffix List."
"""
)
session.run("git", "status", filename, fragment)
# Allow to run the noxfile with `python noxfile.py`, `pipx run noxfile.py`, or similar.
# Requires nox >= 2025.02.09
if __name__ == "__main__":
nox.main()