Prevent publishing to PyPi if tl.telethon.dev is out-of-date

This commit is contained in:
Lonami Exo 2023-02-06 17:40:51 +01:00
parent daf21f12d9
commit 610b8c34dd

View File

@ -16,6 +16,7 @@ import os
import re import re
import shutil import shutil
import sys import sys
import urllib.request
from pathlib import Path from pathlib import Path
from subprocess import run from subprocess import run
@ -43,6 +44,8 @@ class TempWorkDir:
os.chdir(self.original) os.chdir(self.original)
API_REF_URL = 'https://tl.telethon.dev/'
GENERATOR_DIR = Path('telethon_generator') GENERATOR_DIR = Path('telethon_generator')
LIBRARY_DIR = Path('telethon') LIBRARY_DIR = Path('telethon')
@ -155,6 +158,22 @@ def main(argv):
generate(argv[2:], argv[1]) generate(argv[2:], argv[1])
elif len(argv) >= 2 and argv[1] == 'pypi': elif len(argv) >= 2 and argv[1] == 'pypi':
# Make sure tl.telethon.dev is up-to-date first
with urllib.request.urlopen(API_REF_URL) as resp:
html = resp.read()
m = re.search(br'layer\s+(\d+)', html)
if not m:
print('Failed to check that the API reference is up to date:', API_REF_URL)
return
from telethon_generator.parsers import find_layer
layer = next(filter(None, map(find_layer, TLOBJECT_IN_TLS)))
published_layer = int(m[1])
if published_layer != layer:
print('Published layer', published_layer, 'does not match current layer', layer, '.')
print('Make sure to update the API reference site first:', API_REF_URL)
return
# (Re)generate the code to make sure we don't push without it # (Re)generate the code to make sure we don't push without it
generate(['tl', 'errors']) generate(['tl', 'errors'])