proxy.py/check.py

86 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
"""
proxy.py
~~~~~~~~
⚡⚡⚡ Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on
Network monitoring, controls & Application development, testing, debugging.
:copyright: (c) 2013-present by Abhinav Singh and contributors.
:license: BSD, see LICENSE for more details.
"""
import sys
import subprocess
from pathlib import Path
from proxy.common.version import __version__ as lib_version
# This script ensures our versions never run out of sync.
#
# 1. TODO: Version is hardcoded in homebrew stable package
# installer file, but it only needs to match with lib
# versions if current git branch is master
PY_FILE_PREFIX = b'# -*- coding: utf-8 -*-\n' + \
b'"""\n' + \
b' proxy.py\n' + \
b' ~~~~~~~~\n' + \
b' \xe2\x9a\xa1\xe2\x9a\xa1\xe2\x9a\xa1 Fast, Lightweight, Pluggable, TLS interception capable' + \
b' proxy server focused on\n' + \
b' Network monitoring, controls & Application development, testing, debugging.\n' + \
b'\n' + \
b' :copyright: (c) 2013-present by Abhinav Singh and contributors.\n' + \
b' :license: BSD, see LICENSE for more details.\n'
REPO_ROOT = Path(__file__).parent
ALL_PY_FILES = (
list(REPO_ROOT.glob('*.py')) +
list((REPO_ROOT / 'proxy').rglob('*.py')) +
list((REPO_ROOT / 'examples').rglob('*.py')) +
list((REPO_ROOT / 'benchmark').rglob('*.py')) +
list((REPO_ROOT / 'tests').rglob('*.py'))
)
# Ensure all python files start with licensing information
for py_file in ALL_PY_FILES:
if py_file.is_file() and py_file.name != '_scm_version.py':
with open(py_file, 'rb') as f:
code = f.read(len(PY_FILE_PREFIX))
if code != PY_FILE_PREFIX:
print(
'Expected license not found in {0}'.format(
str(py_file),
),
)
sys.exit(1)
# Update README.md flags section to match current library --help output
lib_help = subprocess.check_output(
['python', '-m', 'proxy', '-h'],
)
with open('README.md', 'rb+') as f:
c = f.read()
pre_flags, post_flags = c.split(b'# Flags')
f.seek(0)
f.write(
pre_flags +
b'# Flags\n\n```console\n\xe2\x9d\xaf proxy -h\n' +
lib_help +
b'```\n',
)
# Version is also hardcoded in README.md flags section
readme_version_cmd = 'cat README.md | grep "proxy.py v" | tail -2 | head -1 | cut -d " " -f 2 | cut -c2-'
readme_version_output = subprocess.check_output(
['bash', '-c', readme_version_cmd],
)
# Doesn't contain "v" prefix
readme_version = readme_version_output.decode().strip()
if readme_version != lib_version:
print(
'Version mismatch found. {0} (readme) vs {1} (lib).'.format(
readme_version, lib_version,
),
)
sys.exit(1)