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