#!/usr/bin/env python3 """DruksCodeV2 identity rename script. Replaces: br.com.drukstech.codeapp → br.com.drukstech.codeapp, DruksCode → DruksCode, Dkc → Dkc in all project files.""" import os import re import sys ROOT = "/opt/DruksCodeV2" # Directories to process (source code + configs) TARGET_DIRS = { "app/src/main/java/br/com/drukstech/codeapp": "app/src/main/java/br/com/drukstech/codeapp", "app/src/test/java/br/com/drukstech/codeapp": "app/src/test/java/br/com/drukstech/codeapp", "shell/src/main/java/br/com/drukstech/codeapp": "shell/src/main/java/br/com/drukstech/codeapp", "clone-host/src/main/java/br/com/drukstech/codeapp": "clone-host/src/main/java/br/com/drukstech/codeapp", } # File renames (old basename → new basename) FILE_RENAMES = { "DruksCodeApplication.kt": "DruksCodeApplication.kt", "DruksCodeContent.kt": "DruksCodeContent.kt", } # Content replacements (order matters: longer patterns first) CONTENT_REPLACEMENTS = [ # Package namespaces ("br.com.drukstech.codeapp", "br.com.drukstech.codeapp"), ("br/com/drukstech/codeapp", "br/com/drukstech/codeapp"), ("br.com.drukstech.codeapp.play", "br.com.drukstech.codeapp.play"), # Design system prefix (order: PascalCase first, then UPPER, then lowercase) ("Dkc", "Dkc"), ("DKC", "DKC"), ("dkc", "dkc"), # Product name (order: PascalCase, camelCase, UPPER, kebab, then specific class) ("DruksCodeApplication", "DruksCodeApplication"), ("DruksCodeContent", "DruksCodeContent"), ("DruksCode", "DruksCode"), ("druksCode", "druksCode"), ("DRUKSCODE", "DRUKSCODE"), ("drukscode", "drukscode"), ] # File extensions to process as text TEXT_EXTS = { ".kt", ".java", ".xml", ".gradle", ".kts", ".json", ".md", ".html", ".js", ".ts", ".yaml", ".yml", ".properties", ".pro", ".cfg", ".toml", ".txt", ".sh", ".bat", ".py", ".css", ".scss", } # Files to skip (binary, generated, or irrelevant) SKIP_FILES = { "gradle-wrapper.jar", "gradlew.bat", "LICENSE", } SKIP_DIRS = { ".git", ".gradle", "build", ".idea", ".vscode", "sample_projects", "node_modules", ".zcode", ".workbuddy", } def is_text_file(path): ext = os.path.splitext(path)[1].lower() return ext in TEXT_EXTS def replace_content(text): """Apply all content replacements, avoiding upstream URLs.""" result = text for old, new in CONTENT_REPLACEMENTS: if old == "drukscode": # Preserve actual GitHub upstream URLs result = re.sub( r'(?DruksCode<", ">DruksCode<") c = c.replace("DruksCode", "DruksCode") with open(strings, "w") as f: f.write(c) print(" res/values/strings.xml updated") # Update themes.xml for theme_path in [ "app/src/main/res/values/themes.xml", "app/src/main/res/values-night/themes.xml", ]: tp = os.path.join(ROOT, theme_path) if os.path.exists(tp): with open(tp, "r") as f: c = f.read() if "DruksCode" in c or "dkc" in c.lower(): c = c.replace("DruksCode", "DruksCode") c = c.replace("Dkc", "Dkc") c = c.replace("dkc", "dkc") with open(tp, "w") as f: f.write(c) print(f" {theme_path} updated") print("\n=== DONE ===") print("Verify: grep -r 'com\.webtoapp\|DruksCode\|Dkc' --include='*.kt' --include='*.xml' --include='*.kts' app/src/main/java/ shell/src/main/java/ | head -20") if __name__ == "__main__": main()