diff --git a/cli/release_create.php b/cli/release_create.php index e89b6a8..e2d9bca 100644 --- a/cli/release_create.php +++ b/cli/release_create.php @@ -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>/', $content, $pm)) { - $platform = trim($pm[1]); + if ($content !== false) { + if (preg_match('/([^<]+)<\/platform>/', $content, $pm)) { + $platform = trim($pm[1]); + } + // is the human-friendly name; is the element/repo name + if (preg_match('/([^<]+)<\/display-name>/', $content, $dn)) { + $prettyName = trim($dn[1]); + } elseif (preg_match('/([^<]+)<\/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 ────────────────────────────────────────────────── diff --git a/cli/updates_xml_build.php b/cli/updates_xml_build.php index a74bcf0..93b8f11 100644 --- a/cli/updates_xml_build.php +++ b/cli/updates_xml_build.php @@ -100,6 +100,8 @@ if (file_exists($mokoManifest)) { }; } $detectedName = (string)($mokoXml->identity->name ?? $repo); + // 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 = ""; } -// 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 (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 -if (preg_match('/^(pkg_|com_|mod_|plg_\w+_|tpl_|lib_)/i', $extName) && !empty($detectedName)) { - $extName = $detectedName; +// Display name: use 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) {