void GenerateNuspec()
{
var coreVersion = GenerationManifest.CoreVersion;
// we're generating services only, so can automatically add the core runtime
// as a dependency
var awsDependencies = new Dictionary<string, string>(StringComparer.Ordinal);
if (Configuration.ServiceDependencies != null)
{
var dependencies = Configuration.ServiceDependencies;
foreach (var kvp in dependencies)
{
var service = kvp.Key;
var version = kvp.Value;
var dependentService = GenerationManifest.ServiceConfigurations.FirstOrDefault(x => string.Equals(x.Namespace, "Amazon." + service, StringComparison.InvariantCultureIgnoreCase));
string previewFlag;
if (dependentService != null && dependentService.InPreview)
{
previewFlag = GenerationManifest.PreviewLabel;
}
else if (string.Equals(service, "Core", StringComparison.InvariantCultureIgnoreCase) && GenerationManifest.DefaultToPreview)
{
previewFlag = GenerationManifest.PreviewLabel;
}
else
{
previewFlag = string.Empty;
}
var verTokens = version.Split('.');
var versionRange = string.Format("[{0}{3}, {1}.{2}{3})", version, verTokens[0], int.Parse(verTokens[1]) + 1, previewFlag);
awsDependencies.Add(string.Format("AWSSDK.{0}", service), versionRange);
}
}
var assemblyVersion = Configuration.ServiceFileVersion;
var assemblyName = Configuration.Namespace.Replace("Amazon.", "AWSSDK.");
var assemblyTitle = "AWSSDK - " + Configuration.ServiceModel.ServiceFullName;
var nugetTitle = assemblyTitle;
if (!string.IsNullOrEmpty(Configuration.NugetPackageTitleSuffix))
nugetTitle += " " + Configuration.NugetPackageTitleSuffix;
bool iOSPclVariant = false;
bool androidPclVariant = false;
if (Configuration.PclVariants != null)
{
iOSPclVariant = Configuration.PclVariants.Contains("iOS");
androidPclVariant = Configuration.PclVariants.Contains("Android");
}
var session = new Dictionary<string, object>
{
{ "AssemblyName", assemblyName },
{ "AssemblyTitle", assemblyTitle },
{ "CoreCLRSupport", Configuration.CoreCLRSupport },
{ "CoreCLRCoreAssemblyName", Configuration.ServiceFolderName },
{ "NuGetTitle", nugetTitle },
{ "AssemblyDescription", Configuration.AssemblyDescription },
{ "AssemblyVersion", assemblyVersion },
{ "AWSDependencies", awsDependencies },
{ "BaseName", this.Configuration.BaseName },
{ "CodeAnalysisServiceFolder", this.Configuration.Namespace.Replace("Amazon.", "") },
{ "ProjectFileConfigurations", this.ProjectFileConfigurations},
{ "ExtraTags", Configuration.Tags == null || Configuration.Tags.Count == 0 ? string.Empty : " " + string.Join(" ", Configuration.Tags) },
{ "licenseUrl", Configuration.LicenseUrl },
{ "requireLicenseAcceptance",Configuration.RequireLicenseAcceptance?"true":"false" },
{"DisablePCLSupport", this.Options.DisablePCLSupport}
};
if (Configuration.NugetDependencies != null)
session.Add("NugetDependencies", Configuration.NugetDependencies);
session["NuGetPreviewFlag"] = Configuration.InPreview ? this.GenerationManifest.PreviewLabel : "";
var nuspecGenerator = new Nuspec { Session = session };
var text = nuspecGenerator.TransformText();
var nuspecFilename = assemblyName + ".nuspec";
WriteFile(ServiceFilesRoot, string.Empty, nuspecFilename, text);
}