feat: display-name from manifest.xml, remove type prefix #225
+15
-5
@@ -135,13 +135,22 @@ $extFolder = '';
|
||||
$extName = '';
|
||||
$typePrefix = '';
|
||||
|
||||
// Detect platform from manifest.xml
|
||||
// Detect platform and display name from manifest.xml
|
||||
$platform = 'generic';
|
||||
$prettyName = '';
|
||||
$manifestXml = "{$root}/.mokogitea/manifest.xml";
|
||||
if (file_exists($manifestXml)) {
|
||||
$content = file_get_contents($manifestXml);
|
||||
if ($content !== false && preg_match('/<platform>([^<]+)<\/platform>/', $content, $pm)) {
|
||||
$platform = trim($pm[1]);
|
||||
if ($content !== false) {
|
||||
if (preg_match('/<platform>([^<]+)<\/platform>/', $content, $pm)) {
|
||||
$platform = trim($pm[1]);
|
||||
}
|
||||
// <display-name> is the human-friendly name; <name> is the element/repo name
|
||||
if (preg_match('/<display-name>([^<]+)<\/display-name>/', $content, $dn)) {
|
||||
$prettyName = trim($dn[1]);
|
||||
} elseif (preg_match('/<name>([^<]+)<\/name>/', $content, $nm)) {
|
||||
$prettyName = trim($nm[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,8 +272,9 @@ if (empty($extName)) {
|
||||
echo "Element: {$extElement}, Type: {$extType}, Prefix: {$typePrefix}, Name: {$extName}\n";
|
||||
|
||||
// ── Build release name ──────────────────────────────────────────────────────
|
||||
|
||||
$releaseName = "{$extName} {$version} ({$typePrefix}{$extElement}-{$version})";
|
||||
// Use display-name from manifest.xml if available, otherwise fall back to extName
|
||||
$displayName = !empty($prettyName) ? $prettyName : $extName;
|
||||
$releaseName = "{$displayName} {$version} ({$typePrefix}{$extElement}-{$version})";
|
||||
echo "Release name: {$releaseName}\n";
|
||||
|
||||
// ── Generate release notes ──────────────────────────────────────────────────
|
||||
|
||||
+11
-46
@@ -100,6 +100,8 @@ if (file_exists($mokoManifest)) {
|
||||
};
|
||||
}
|
||||
$detectedName = (string)($mokoXml->identity->name ?? $repo);
|
||||
// <display-name> is the human-friendly name for releases and updates.xml
|
||||
$detectedDisplayName = (string)($mokoXml->identity->{"display-name"} ?? '');
|
||||
$detectedPackageType = (string)($mokoXml->build->{"package-type"} ?? '');
|
||||
}
|
||||
}
|
||||
@@ -200,33 +202,7 @@ if ($manifest !== null) {
|
||||
$targetPlatform = "<targetplatform name=\"{$detectedPlatform}\" version=\".*\" />";
|
||||
}
|
||||
|
||||
// Resolve display name from .sys.ini language files
|
||||
$iniFiles = [];
|
||||
$langIterator = new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($root, RecursiveDirectoryIterator::SKIP_DOTS)
|
||||
);
|
||||
foreach ($langIterator as $file) {
|
||||
if (preg_match('/\.sys\.ini$/i', $file->getFilename())) {
|
||||
$iniFiles[] = $file->getPathname();
|
||||
}
|
||||
}
|
||||
$keyCandidates = [$extName];
|
||||
if (!preg_match('/^[A-Z_]+$/', $extName)) {
|
||||
$upper = strtoupper(str_replace([' ', '-'], '_', $extName));
|
||||
$keyCandidates[] = "TPL_{$upper}";
|
||||
$keyCandidates[] = "MOD_{$upper}";
|
||||
$keyCandidates[] = "COM_{$upper}";
|
||||
$keyCandidates[] = "PLG_{$upper}";
|
||||
}
|
||||
foreach ($iniFiles as $ini) {
|
||||
$content = file_get_contents($ini);
|
||||
foreach ($keyCandidates as $key) {
|
||||
if (preg_match('/^' . preg_quote($key, '/') . '="([^"]+)"/m', $content, $m)) {
|
||||
$extName = $m[1];
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Display name resolution moved to manifest.xml <display-name> (below)
|
||||
|
||||
// Fallbacks
|
||||
if (empty($extName)) {
|
||||
@@ -236,27 +212,16 @@ if (empty($extType)) {
|
||||
$extType = 'component';
|
||||
}
|
||||
|
||||
// If extName is still a technical/prefixed name (mod_foo, tpl_foo), prefer
|
||||
// the human-readable name from .mokogitea/manifest.xml <identity><name>
|
||||
if (preg_match('/^(pkg_|com_|mod_|plg_\w+_|tpl_|lib_)/i', $extName) && !empty($detectedName)) {
|
||||
$extName = $detectedName;
|
||||
// Display name: use <display-name> from manifest.xml if available
|
||||
// This is the canonical human-friendly name — no type prefix added
|
||||
if (!empty($detectedDisplayName)) {
|
||||
$displayName = $detectedDisplayName;
|
||||
} elseif (!empty($detectedName)) {
|
||||
$displayName = $detectedName;
|
||||
} else {
|
||||
$displayName = $extName;
|
||||
}
|
||||
|
||||
// Build display name with type prefix (e.g. "Package - MokoWaaS")
|
||||
$typeDisplayMap = [
|
||||
'package' => 'Package',
|
||||
'plugin' => 'Plugin',
|
||||
'module' => 'Module',
|
||||
'component' => 'Component',
|
||||
'template' => 'Template',
|
||||
'library' => 'Library',
|
||||
'file' => 'File',
|
||||
];
|
||||
$typeDisplay = $typeDisplayMap[$extType] ?? ucfirst($extType);
|
||||
// Strip existing type prefix to avoid doubling (e.g. "Template - Template - MokoOnyx")
|
||||
$extName = preg_replace('/^(' . implode('|', array_map('preg_quote', $typeDisplayMap)) . ')\s*-\s*/i', '', $extName);
|
||||
$displayName = "{$typeDisplay} - {$extName}";
|
||||
|
||||
// -- Build type prefix --------------------------------------------------------
|
||||
$typePrefix = '';
|
||||
switch ($extType) {
|
||||
|
||||
Reference in New Issue
Block a user