diff --git a/src/Umbraco.Core/Manifest/PackageManifest.cs b/src/Umbraco.Core/Manifest/PackageManifest.cs index c49ae3f719..56c69ebb15 100644 --- a/src/Umbraco.Core/Manifest/PackageManifest.cs +++ b/src/Umbraco.Core/Manifest/PackageManifest.cs @@ -1,6 +1,8 @@ using System; +using System.IO; using System.Runtime.Serialization; using Umbraco.Cms.Core.PropertyEditors; +using Umbraco.Extensions; namespace Umbraco.Cms.Core.Manifest { @@ -10,10 +12,30 @@ namespace Umbraco.Cms.Core.Manifest [DataContract] public class PackageManifest { - [DataMember(Name = "name", IsRequired = false)] - public string PackageName { get; set; } + private string _packageName; - [DataMember(Name = "packageView", IsRequired = false)] + /// + /// An optional package name. If not specified then the directory name is used. + /// + [DataMember(Name = "name")] + public string PackageName + { + get + { + if (!_packageName.IsNullOrWhiteSpace()) + { + return _packageName; + } + if (!Source.IsNullOrWhiteSpace()) + { + _packageName = Path.GetFileName(Path.GetDirectoryName(Source)); + } + return _packageName; + } + set => _packageName = value; + } + + [DataMember(Name = "packageView")] public string PackageView { get; set; } /// diff --git a/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs b/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs index 5b69e0374e..7d98a19091 100644 --- a/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs +++ b/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs @@ -170,7 +170,10 @@ namespace Umbraco.Cms.Core.Manifest private IEnumerable GetManifestFiles() { if (Directory.Exists(_path) == false) - return new string[0]; + { + return Array.Empty(); + } + return Directory.GetFiles(_path, "package.manifest", SearchOption.AllDirectories); }