eng/scripts/util.py (37 lines of code) (raw):
#!/usr/bin/python3
"""
util.py
Utility scripts to simplify bash scripting
"""
import glob
import json
import logging
import os
import re
import sys
def _log_error_and_quit(msg, out = None, err = None, code = 1):
""" Log an error message and exit. """
warning_color = '\033[91m'
end_color = '\033[0m'
if err:
logging.error(f'{err}')
elif out:
logging.error(f'{out}')
logging.error(f'{warning_color}{msg} ({code}){end_color}')
sys.exit(code)
"""
Outputs the path to projects that have podspec files
"""
def list_podspecs(*args):
pattern = os.path.join(ROOT, 'sdk', '**', '*.podspec.json')
podspec_files = glob.glob(pattern, recursive=True)
for path in podspec_files:
print(path)
"""
Outputs the path to projects that have Package.swift files
"""
def list_swift_packages(*args):
pattern = os.path.join(ROOT, 'sdk', '**', 'Package.swift')
podspec_files = glob.glob(pattern, recursive=True)
for path in podspec_files:
directory, _ = os.path.split(os.path.normpath(path))
print(directory)
ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
if __name__ == '__main__':
usage = f'usage: {__file__} {{list_podspecs|list_swift_packages}}'
try:
command = sys.argv[1].strip().lower()
method = globals().get(command)
if not method:
_log_error_and_quit(usage)
method(sys.argv[2:])
except IndexError:
_log_error_and_quit(usage)