Files
Siro/copy_native_and_packages.py
2026-06-09 08:40:31 +03:00

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()