File indexing completed on 2024-05-19 05:42:35
0001 import re 0002 0003 # Order matters, please avoid changing the order of this list 0004 PKG_PATH_MAPPING = { 0005 'KNewStuff': 'KNewStuff', 0006 'Attica': 'Attica', 0007 'KConfigWidgets': 'KConfigWidgets', 0008 'KIOFileWidgets': 'KIO', 0009 'KSyntaxHighlighting': 'KSyntaxHighlighting', 0010 'KActivities': 'KActivities', 0011 'KCoreAddons': 'KCoreAddons', 0012 'KIOGui': 'KIO', 0013 'KTextEditor': 'KTextEditor', 0014 'KArchive': 'KArchive', 0015 'KCrash': 'KCrash', 0016 'KIOWidgets': 'KIO', 0017 'KTextWidgets': 'KTextWidgets', 0018 'KAuth': 'KAuth', 0019 'KDBusAddons': 'KDBusAddons', 0020 'Kirigami2': 'Kirigami2', 0021 'KWallet': 'KWallet', 0022 'KAuthCore': 'KAuthCore', 0023 'KDocTools': 'KDocTools', 0024 'KItemViews': 'KItemViews', 0025 'KWidgetsAddons': 'KWidgetsAddons', 0026 'KAuthWidgets': 'KAuthWidgets', 0027 'KGlobalAccel': 'KGlobalAccel', 0028 'KJobWidgets': 'KJobWidgets', 0029 'KWindowSystem': 'KWindowSystem', 0030 'KBookmarks': 'KBookmarks', 0031 'KGuiAddons': 'KGuiAddons', 0032 'KMoreTools': 'KNewStuff', 0033 'KXmlGui': 'KXmlGui', 0034 'KCodecs': 'KCodecs', 0035 'KI18n': 'KI18n', 0036 'KNewStuff3': 'KNewStuff', 0037 'Solid': 'Solid', 0038 'KCompletion': 'KCompletion', 0039 'KI18nLocaleData': 'KI18n', 0040 'KNotifyConfig': 'KNotifyConfig', 0041 'KNotifications': 'KNotifications', 0042 'Sonnet': 'Sonnet', 0043 'KConfig': 'KConfig', 0044 'KIconThemes': 'KIconThemes', 0045 'KPackage': 'KPackage', 0046 'SonnetCore': 'Sonnet', 0047 'KConfigCore': 'KConfig', 0048 'kio': 'KIO', 0049 'KParts': 'KParts', 0050 'SonnetUi': 'Sonnet', 0051 'KConfigGui': 'KConfig', 0052 'KIO': 'KIO', 0053 'KPty': 'KPty', 0054 'Syndication': 'Syndication', 0055 'KConfigQml': 'KConfig', 0056 'KIOCore': 'KIO', 0057 'KService': 'KService', 0058 'KUserFeedback': 'KUserFeedback', 0059 'KDNSSD': 'KDNSSD', 0060 'KItemModels': 'KItemModels', 0061 'KFileMetaData': 'KFileMetaData', 0062 'KDeclarative': 'KDeclarative', 0063 'KCMUtils': 'KCMUtils', 0064 'purpose': 'purpose', 0065 'threadweaver': 'threadweaver', 0066 } 0067 0068 def accept(path): 0069 for pathPrefix in PKG_PATH_MAPPING.keys(): 0070 if f'/{pathPrefix}/'.lower() in path.lower(): 0071 return True 0072 return False 0073 0074 0075 def process(path, addPkg): 0076 path = path.lower() 0077 pkgName = topLevelPackageName(path) 0078 addPkg(pkgName, None, 'KF5', None) 0079 0080 if 'build' in path: 0081 pkgName = processBuildDir(path, pkgName, addPkg) 0082 elif 'src' in path: 0083 pkgName = processSourceDir(path, pkgName, addPkg) 0084 0085 if 'kxmlguibuilder' in path: 0086 print(f'kxmlguibuilder pkgName={pkgName}') 0087 return pkgName 0088 0089 0090 def topLevelPackageName(path): 0091 for pathPrefix, pkgName in PKG_PATH_MAPPING.items(): 0092 if f'/{pathPrefix}/'.lower() in path: 0093 return pkgName 0094 return 'Unknown' 0095 0096 0097 def processSourceDir(path, pkgName, addPkg): 0098 for innerPkg in re.split('src', path)[-1].split('/')[1:-1]: 0099 addPkg(innerPkg, pkgName, None, None) 0100 pkgName = innerPkg 0101 return pkgName 0102 0103 0104 def processBuildDir(path, pkgName, addPkg): 0105 if 'src/lib' in path: 0106 # Exported headers 0107 addPkg(f'{pkgName}/ForwardingHeaders', pkgName, None, None) 0108 pkgName = f'{pkgName}/ForwardingHeaders' 0109 else: 0110 if 'kxmlguibuilder' in path: 0111 print(f'kxmlguibuilder pkgName={pkgName}') 0112 addPkg(f'{pkgName}/BuildGenFiles', pkgName, None, None) 0113 pkgName = f'{pkgName}/BuildGenFiles' 0114 return pkgName 0115