mirror of
https://github.com/bytedream/stream-bypass.git
synced 2025-06-27 02:20:32 +02:00
Initial commit
This commit is contained in:
105
build.py
Executable file
105
build.py
Executable file
@ -0,0 +1,105 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
|
||||
def load_matches():
|
||||
matched = []
|
||||
|
||||
indexed = False
|
||||
pattern = re.compile(r"(?<=\[')\S*(?=',)")
|
||||
for line in open('src/match.ts', 'r'):
|
||||
if not indexed:
|
||||
if 'constmatches=[' in line.replace(' ', ''):
|
||||
indexed = True
|
||||
else:
|
||||
match = pattern.findall(line)
|
||||
if match:
|
||||
matched.append(match[0])
|
||||
else:
|
||||
break
|
||||
|
||||
return matched
|
||||
|
||||
|
||||
def write_manifest():
|
||||
matches = load_matches()
|
||||
manifest = json.load(open('src/manifest.json', 'r'))
|
||||
|
||||
for content_script in manifest['content_scripts']:
|
||||
content_script['matches'] = [f'*://{match}/*' for match in matches]
|
||||
|
||||
json.dump(manifest, open('src/manifest.json', 'w'), indent=2)
|
||||
|
||||
|
||||
def write_supported():
|
||||
open('SUPPORTED', 'w').writelines([f'{match}\n' for match in load_matches()])
|
||||
|
||||
|
||||
def copy_built():
|
||||
if not shutil.which('tsc'):
|
||||
sys.stderr.write('The typescript compiler `tsc` could not be found')
|
||||
sys.exit(1)
|
||||
elif not shutil.which('sass'):
|
||||
sys.stderr.write('The sass compiler `sass` could not be found')
|
||||
sys.exit(1)
|
||||
|
||||
write_manifest()
|
||||
|
||||
subprocess.call(['tsc', '-p', 'src'])
|
||||
|
||||
build_path = Path('build')
|
||||
if build_path.is_dir():
|
||||
for file in build_path.rglob('*'):
|
||||
if file.is_dir():
|
||||
shutil.rmtree(str(file))
|
||||
else:
|
||||
file.unlink()
|
||||
else:
|
||||
build_path.mkdir()
|
||||
for file in Path('src').rglob('*'):
|
||||
build_file = build_path.joinpath(str(file)[4:])
|
||||
if file.is_dir():
|
||||
build_file.mkdir(parents=True)
|
||||
elif file.suffix == '.sass':
|
||||
css_file = str(file)[:-4] + 'css'
|
||||
subprocess.call(['sass', '--no-source-map', file, css_file])
|
||||
shutil.copy(css_file, str(build_path.joinpath(css_file[4:])))
|
||||
elif file.name == 'tsconfig.json':
|
||||
continue
|
||||
elif file.suffix != '.ts':
|
||||
shutil.copy(str(file), str(build_file))
|
||||
|
||||
|
||||
def clean_build():
|
||||
for file in Path('src').rglob('*'):
|
||||
if file.suffix in ['.js', '.css', '.map']:
|
||||
file.unlink()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-m', '--manifest', action='store_true', help='Builds the manifest.json file for addon information in ./src')
|
||||
parser.add_argument('-s', '--supported', action='store_true', help='Builds the SUPPORTED file with all supported domains in the current directory')
|
||||
parser.add_argument('-b', '--build', action='store_true', help='Creates a ./build folder and builds all typescript / sass files')
|
||||
parser.add_argument('-c', '--clean', action='store_true', help='Cleans the ./src folder from .js, .css and .map files')
|
||||
|
||||
parsed = parser.parse_args()
|
||||
|
||||
if parsed.manifest:
|
||||
write_manifest()
|
||||
if parsed.supported:
|
||||
write_supported()
|
||||
if parsed.build:
|
||||
copy_built()
|
||||
if parsed.clean:
|
||||
clean_build()
|
||||
|
||||
if not parsed.manifest and not parsed.supported and not parsed.build and not parsed.clean:
|
||||
print('\n'.join(load_matches()))
|
Reference in New Issue
Block a user