Revision control
Copy as Markdown
#!/usr/bin/env python3
from configparser import RawConfigParser
from pathlib import Path
import io
import shutil
import subprocess
import sys
def main(args):
if len(args) != 1:
print("usage clean-gradle-autopublish.py [path-to-firefox-android]")
sys.exit(1)
ff_android_path = Path(args[0])
if not path_looks_like_firefox_android(ff_android_path):
print(f"{ff_android_path} does not look like a firefox-android repo")
sys.exit(1)
appservices_path = Path(__file__).parent.parent
check_rust_targets(appservices_path)
# Delete lastAutoPublishContentsHash to force gradle to rebuild/republish our maven packages
delete_if_exists(appservices_path / '.lastAutoPublishContentsHash')
# Delete the packages in our local maven repository as well
delete_if_exists(Path.home().joinpath('.m2', 'repository', 'org', 'mozilla', 'appservices'))
subprocess.run(["cargo", "clean"], cwd=appservices_path)
subprocess.run(["./gradlew", "clean"], cwd=appservices_path)
subprocess.run(["./gradlew", "clean"], cwd=ff_android_path / 'android-components')
subprocess.run(["./gradlew", "clean"], cwd=ff_android_path / 'fenix')
def path_looks_like_firefox_android(path):
return path.joinpath('android-components').exists() and path.joinpath("fenix").exists()
def check_rust_targets(appservices_path):
# config parser expects a header, but properties files don't have them. So add one manually:
f = io.StringIO()
f.write("[main]\n")
f.write((appservices_path / 'local.properties').open().read())
f.seek(0)
config = RawConfigParser()
config.read_file(f)
rust_targets = config['main'].get('rust.targets')
if rust_targets is not None:
if "linux-x86-64" not in rust_targets.split(','):
print("rust.targets set in local.properties, but linux-x86-64 is not included.")
print("This will cause builds to fail, please fix this before running clean-gradle-autopublish.py")
sys.exit(1)
print(f"rust targets set to: {rust_targets}")
print("Note: this means that only APKs for those targets will work")
input("\nPress enter to continue")
def delete_if_exists(path):
if path.exists():
if path.is_file():
path.unlink()
else:
shutil.rmtree(path)
if __name__ == '__main__':
main(sys.argv[1:])