119 lines
4.6 KiB
Python
119 lines
4.6 KiB
Python
import os
|
|
import shutil
|
|
|
|
SOURCE_DIR = "/Users/hamzaaleghwairyeen/development/App"
|
|
TARGET_DIR = "/Users/hamzaaleghwairyeen/development/App/Siro"
|
|
|
|
mappings = [
|
|
{
|
|
"src": "Intaleq",
|
|
"dst": "siro_rider",
|
|
"old_app_id": "com.Intaleq.intaleq",
|
|
"new_app_id": "com.siro.siro_rider",
|
|
"extra_folders": ["packages"]
|
|
},
|
|
{
|
|
"src": "intaleq_driver",
|
|
"dst": "siro_driver",
|
|
"old_app_id": "com.intaleq_driver",
|
|
"new_app_id": "com.siro.siro_driver",
|
|
"extra_folders": ["bubble-master", "trip_overlay_plugin"]
|
|
},
|
|
{
|
|
"src": "intaleq_admin",
|
|
"dst": "siro_admin",
|
|
"old_app_id": "com.intaleq.intaleq_admin",
|
|
"new_app_id": "com.siro.siro_admin",
|
|
"extra_folders": []
|
|
},
|
|
{
|
|
"src": "service_intaleq",
|
|
"dst": "siro_service",
|
|
"old_app_id": "com.service_intaleq",
|
|
"new_app_id": "com.siro.siro_service",
|
|
"extra_folders": []
|
|
}
|
|
]
|
|
|
|
def replace_in_file(filepath, old_str, new_str):
|
|
try:
|
|
with open(filepath, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
if old_str in content:
|
|
content = content.replace(old_str, new_str)
|
|
with open(filepath, 'w', encoding='utf-8') as f:
|
|
f.write(content)
|
|
except Exception as e:
|
|
pass
|
|
|
|
def process():
|
|
for m in mappings:
|
|
src_app = os.path.join(SOURCE_DIR, m['src'])
|
|
dst_app = os.path.join(TARGET_DIR, m['dst'])
|
|
|
|
print(f"Processing native folders for {m['dst']}...")
|
|
|
|
# 1. Copy native folders
|
|
native_folders = ['android', 'ios', 'macos', 'web']
|
|
for folder in native_folders:
|
|
s_folder = os.path.join(src_app, folder)
|
|
d_folder = os.path.join(dst_app, folder)
|
|
if os.path.exists(s_folder):
|
|
if os.path.exists(d_folder):
|
|
shutil.rmtree(d_folder)
|
|
shutil.copytree(s_folder, d_folder, symlinks=True, ignore=shutil.ignore_patterns('.symlinks', 'Pods', 'build', '.dart_tool'))
|
|
|
|
# 2. Copy extra internal packages
|
|
for folder in m['extra_folders']:
|
|
s_folder = os.path.join(src_app, folder)
|
|
d_folder = os.path.join(dst_app, folder)
|
|
if os.path.exists(s_folder):
|
|
if os.path.exists(d_folder):
|
|
shutil.rmtree(d_folder)
|
|
shutil.copytree(s_folder, d_folder, symlinks=True, ignore=shutil.ignore_patterns('build', '.dart_tool'))
|
|
|
|
# 3. Android Package Renaming
|
|
old_app_id = m['old_app_id']
|
|
new_app_id = m['new_app_id']
|
|
|
|
android_dir = os.path.join(dst_app, 'android')
|
|
if os.path.exists(android_dir):
|
|
# Replace string occurrences in Android files
|
|
for root, dirs, files in os.walk(android_dir):
|
|
for file in files:
|
|
if file.endswith(('.kt', '.java', '.xml', '.gradle', '.gradle.kts', '.pro')):
|
|
replace_in_file(os.path.join(root, file), old_app_id, new_app_id)
|
|
|
|
# Move kotlin/java directory structure
|
|
for lang in ['kotlin', 'java']:
|
|
for source_type in ['main', 'debug', 'profile']:
|
|
src_dir = os.path.join(android_dir, 'app', 'src', source_type, lang)
|
|
if os.path.exists(src_dir):
|
|
old_path = os.path.join(src_dir, *old_app_id.split('.'))
|
|
new_path = os.path.join(src_dir, *new_app_id.split('.'))
|
|
|
|
if os.path.exists(old_path) and old_path != new_path:
|
|
os.makedirs(new_path, exist_ok=True)
|
|
for item in os.listdir(old_path):
|
|
shutil.move(os.path.join(old_path, item), new_path)
|
|
|
|
# Clean up old empty directories
|
|
curr = old_path
|
|
while curr != src_dir:
|
|
if not os.listdir(curr):
|
|
os.rmdir(curr)
|
|
curr = os.path.dirname(curr)
|
|
|
|
# 4. iOS Bundle ID Renaming
|
|
ios_dir = os.path.join(dst_app, 'ios')
|
|
if os.path.exists(ios_dir):
|
|
for root, dirs, files in os.walk(ios_dir):
|
|
for file in files:
|
|
if file.endswith(('.pbxproj', '.plist', '.m', '.h', '.swift', '.storyboard', '.xcconfig')):
|
|
replace_in_file(os.path.join(root, file), old_app_id, new_app_id)
|
|
|
|
print("Done copying and modifying native folders.")
|
|
|
|
if __name__ == "__main__":
|
|
process()
|