4 using System.Collections.Generic;
5 using System.ComponentModel;
7 using SiliconStudio.Core;
9 namespace SiliconStudio.Assets
14 [DataContract(
"PackageMeta")]
22 Authors =
new List<string>();
23 Owners =
new List<string>();
33 public string Name {
get; set; }
49 public string Title {
get; set; }
56 public List<string> Authors {
get;
private set; }
63 public List<string> Owners {
get;
private set; }
71 public Uri IconUrl {
get; set; }
79 public Uri LicenseUrl {
get; set; }
87 public Uri ProjectUrl {
get; set; }
95 public bool RequireLicenseAcceptance {
get; set; }
103 public string Description {
get; set; }
111 public string Summary {
get; set; }
119 public string ReleaseNotes {
get; set; }
127 public string Language {
get; set; }
135 public string Tags {
get; set; }
143 public string Copyright {
get; set; }
151 public string RootNamespace {
get; set; }
165 public Uri ReportAbuseUrl {
get;
private set; }
172 public int DownloadCount {
get;
private set; }
179 public bool IsAbsoluteLatestVersion {
get;
private set; }
186 public bool IsLatestVersion {
get;
private set; }
193 public bool Listed {
get;
private set; }
200 public DateTimeOffset? Published {
get;
private set; }
209 if (packageMeta == null)
throw new ArgumentNullException(
"packageMeta");
210 foreach (var packageDependency
in Dependencies)
212 if (!packageMeta.Dependencies.Contains(packageDependency))
214 packageMeta.Dependencies.Add(packageDependency.Clone());
227 if (
string.IsNullOrWhiteSpace(packageName))
throw new ArgumentNullException(
"packageName");
233 Description =
"Modify description of this package here",
235 meta.Authors.Add(
"Modify Author of this package here");
244 private void InitializeFrom(NuGet.IPackageMetadata
metadata)
248 Title = metadata.Title;
249 Authors.AddRange(metadata.Authors);
250 Owners.AddRange(metadata.Owners);
251 IconUrl = metadata.IconUrl;
252 LicenseUrl = metadata.LicenseUrl;
253 ProjectUrl = metadata.ProjectUrl;
254 RequireLicenseAcceptance = metadata.RequireLicenseAcceptance;
255 Description = metadata.Description;
256 Summary = metadata.Summary;
257 ReleaseNotes = metadata.ReleaseNotes;
258 Language = metadata.Language;
259 Tags = metadata.Tags;
260 Copyright = metadata.Copyright;
262 var dependencySets = metadata.DependencySets.ToList();
263 if (dependencySets.Count > 1)
265 throw new InvalidOperationException(
"Metadata loaded from nuspec cannot have more than one group of dependency");
269 Dependencies.Clear();
270 var dependencySet = dependencySets.FirstOrDefault();
271 if (dependencySet != null)
273 foreach (var dependency
in dependencySet.Dependencies)
275 var packageDependency =
new PackageDependency(dependency.Id, PackageVersionRange.FromVersionSpec(dependency.VersionSpec));
276 Dependencies.Add(packageDependency);
280 var serverMetaData =
metadata as NuGet.IServerPackageMetadata;
281 if (serverMetaData != null)
283 ReportAbuseUrl = serverMetaData.ReportAbuseUrl;
284 DownloadCount = serverMetaData.DownloadCount;
287 var
package = metadata as NuGet.IPackage;
290 IsAbsoluteLatestVersion = package.IsAbsoluteLatestVersion;
291 IsLatestVersion = package.IsLatestVersion;
292 Listed = package.Listed;
293 Published = package.Published;
297 internal static PackageMeta FromNuGet(NuGet.IPackageMetadata
metadata)
299 var packageMeta =
new PackageMeta();
300 packageMeta.InitializeFrom(
metadata);
304 internal NuGet.Manifest ToNugetManifest()
306 var manifestMeta =
new NuGet.ManifestMetadata();
307 ToNugetManifest(manifestMeta);
308 return new NuGet.Manifest() { Metadata = manifestMeta };
311 internal void ToNugetManifest(NuGet.ManifestMetadata manifestMeta)
313 manifestMeta.Id = this.Name;
314 manifestMeta.Version = this.Version.ToString();
315 manifestMeta.Title = this.Title.SafeTrim();
316 manifestMeta.Authors = string.Join(
",", this.Authors);
317 manifestMeta.Owners = string.Join(
",", Owners.Count == 0 ? Authors : Owners);
318 manifestMeta.Tags = String.IsNullOrEmpty(this.Tags) ? null : this.Tags.SafeTrim();
319 manifestMeta.LicenseUrl = ConvertUrlToStringSafe(this.LicenseUrl);
320 manifestMeta.ProjectUrl = ConvertUrlToStringSafe(this.ProjectUrl);
321 manifestMeta.IconUrl = ConvertUrlToStringSafe(this.IconUrl);
322 manifestMeta.RequireLicenseAcceptance = this.RequireLicenseAcceptance;
323 manifestMeta.DevelopmentDependency =
false;
324 manifestMeta.Description = this.Description.SafeTrim();
325 manifestMeta.Copyright = this.Copyright.SafeTrim();
326 manifestMeta.Summary = this.Summary.SafeTrim();
327 manifestMeta.ReleaseNotes = this.ReleaseNotes.SafeTrim();
328 manifestMeta.Language = this.Language.SafeTrim();
329 manifestMeta.DependencySets =
new List<NuGet.ManifestDependencySet>();
330 manifestMeta.FrameworkAssemblies =
new List<NuGet.ManifestFrameworkAssembly>();
331 manifestMeta.ReferenceSets =
new List<NuGet.ManifestReferenceSet>();
333 var dependencySet =
new NuGet.ManifestDependencySet();
334 foreach (var dependency
in Dependencies)
336 if (manifestMeta.DependencySets.Count == 0)
337 manifestMeta.DependencySets.Add(dependencySet);
339 dependencySet.Dependencies.Add(
new NuGet.ManifestDependency() { Id = dependency.Name, Version = dependency.Version.ToString() });
343 private static string ConvertUrlToStringSafe(
Uri url)
347 string originalString = url.OriginalString.SafeTrim();
348 if (!
string.IsNullOrEmpty(originalString))
350 return originalString;
_In_ size_t _In_ const TexMetadata & metadata
A collection of PackageProfile.
A hybrid implementation of SemVer that supports semantic versioning as described at http://semver...