mirror of
https://github.com/pentoo/pentoo-overlay
synced 2025-12-06 08:25:01 +01:00
61 lines
2.5 KiB
Python
Executable file
61 lines
2.5 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
This script extracts gradle chache files into a separate directory for futher
|
|
offline installation
|
|
|
|
Add the following in build.gradle:
|
|
repositories {
|
|
if ('allow' == System.properties['build.network_access']) {
|
|
mavenCentral()
|
|
} else {
|
|
maven { url 'dependencies' }
|
|
}
|
|
}
|
|
"""
|
|
__author__ = "https://stackoverflow.com/questions/28436473/build-gradle-repository-for-offline-development"
|
|
|
|
import sys
|
|
import os
|
|
import subprocess
|
|
import glob
|
|
import shutil
|
|
|
|
|
|
def main(argv):
|
|
build_param = "build"
|
|
# build_param = "buildGhidra"
|
|
if len(sys.argv) > 1:
|
|
build_param = sys.argv[1]
|
|
|
|
project_dir = os.path.dirname(os.path.realpath(__file__))
|
|
repo_dir = os.path.join(project_dir, "dependencies")
|
|
temp_home = os.path.join(project_dir, ".gradle_home")
|
|
if not os.path.isdir(temp_home):
|
|
os.makedirs(temp_home)
|
|
subprocess.call(["gradle", "-g", temp_home, "-Dbuild.network_access=allow", build_param])
|
|
cache_files = os.path.join(temp_home, "caches/modules-*/files-*")
|
|
for cache_dir in glob.glob(cache_files):
|
|
for cache_group_id in os.listdir(cache_dir):
|
|
cache_group_dir = os.path.join(cache_dir, cache_group_id)
|
|
repo_group_dir = os.path.join(repo_dir, cache_group_id.replace('.', '/'))
|
|
for cache_artifact_id in os.listdir(cache_group_dir):
|
|
cache_artifact_dir = os.path.join(cache_group_dir, cache_artifact_id)
|
|
repo_artifact_dir = os.path.join(repo_group_dir, cache_artifact_id)
|
|
for cache_version_id in os.listdir(cache_artifact_dir):
|
|
cache_version_dir = os.path.join(cache_artifact_dir, cache_version_id)
|
|
repo_version_dir = os.path.join(repo_artifact_dir, cache_version_id)
|
|
if not os.path.isdir(repo_version_dir):
|
|
os.makedirs(repo_version_dir)
|
|
cache_items = os.path.join(cache_version_dir, "*/*")
|
|
for cache_item in glob.glob(cache_items):
|
|
cache_item_name = os.path.basename(cache_item)
|
|
repo_item_path = os.path.join(repo_version_dir, cache_item_name)
|
|
print("%s:%s:%s (%s)" % (cache_group_id, cache_artifact_id, cache_version_id, cache_item_name))
|
|
shutil.copyfile(cache_item, repo_item_path)
|
|
shutil.rmtree(temp_home)
|
|
return 0
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main(sys.argv))
|