3 changed files with 701 additions and 634 deletions
@ -0,0 +1,469 @@ |
|||
public class Packages |
|||
{ |
|||
public List<NuGetPackSettings> NuspecNuGetSettings { get; private set; } |
|||
public FilePath[] NugetPackages { get; private set; } |
|||
public FilePath[] BinFiles { get; private set; } |
|||
|
|||
public Packages(ICakeContext context, Parameters parameters) |
|||
{ |
|||
// NUGET NUSPECS |
|||
context.Information("Getting git modules:"); |
|||
|
|||
var ignoredSubModulesPaths = System.IO.File.ReadAllLines(".git/config").Where(m=>m.StartsWith("[submodule ")).Select(m => |
|||
{ |
|||
var path = m.Split(' ')[1].Trim("\"[] \t".ToArray()); |
|||
context.Information(path); |
|||
return ((DirectoryPath)context.Directory(path)).FullPath; |
|||
}).ToList(); |
|||
|
|||
var normalizePath = new Func<string, string>( |
|||
path => path.Replace(System.IO.Path.DirectorySeparatorChar, System.IO.Path.AltDirectorySeparatorChar).ToUpperInvariant()); |
|||
|
|||
// Key: Package Id |
|||
// Value is Tuple where Item1: Package Version, Item2: The packages.config file path. |
|||
var packageVersions = new Dictionary<string, IList<Tuple<string,string>>>(); |
|||
|
|||
System.IO.Directory.EnumerateFiles(((DirectoryPath)context.Directory("./src")).FullPath, "packages.config", SearchOption.AllDirectories).ToList().ForEach(fileName => |
|||
{ |
|||
if (!ignoredSubModulesPaths.Any(i => normalizePath(fileName).Contains(normalizePath(i)))) |
|||
{ |
|||
var file = new PackageReferenceFile(fileName); |
|||
foreach (PackageReference packageReference in file.GetPackageReferences()) |
|||
{ |
|||
IList<Tuple<string, string>> versions; |
|||
packageVersions.TryGetValue(packageReference.Id, out versions); |
|||
if (versions == null) |
|||
{ |
|||
versions = new List<Tuple<string, string>>(); |
|||
packageVersions[packageReference.Id] = versions; |
|||
} |
|||
versions.Add(Tuple.Create(packageReference.Version.ToString(), fileName)); |
|||
} |
|||
} |
|||
}); |
|||
|
|||
context.Information("Checking installed NuGet package dependencies versions:"); |
|||
|
|||
packageVersions.ToList().ForEach(package => |
|||
{ |
|||
var packageVersion = package.Value.First().Item1; |
|||
bool isValidVersion = package.Value.All(x => x.Item1 == packageVersion); |
|||
if (!isValidVersion) |
|||
{ |
|||
context.Information("Error: package {0} has multiple versions installed:", package.Key); |
|||
foreach (var v in package.Value) |
|||
{ |
|||
context.Information("{0}, file: {1}", v.Item1, v.Item2); |
|||
} |
|||
throw new Exception("Detected multiple NuGet package version installed for different projects."); |
|||
} |
|||
}); |
|||
|
|||
context.Information("Setting NuGet package dependencies versions:"); |
|||
|
|||
var SerilogVersion = packageVersions["Serilog"].FirstOrDefault().Item1; |
|||
var SplatVersion = packageVersions["Splat"].FirstOrDefault().Item1; |
|||
var SpracheVersion = packageVersions["Sprache"].FirstOrDefault().Item1; |
|||
var SystemReactiveVersion = packageVersions["System.Reactive"].FirstOrDefault().Item1; |
|||
var SkiaSharpVersion = packageVersions["SkiaSharp"].FirstOrDefault().Item1; |
|||
var SharpDXVersion = packageVersions["SharpDX"].FirstOrDefault().Item1; |
|||
var SharpDXDirect2D1Version = packageVersions["SharpDX.Direct2D1"].FirstOrDefault().Item1; |
|||
var SharpDXDirect3D11Version = packageVersions["SharpDX.Direct3D11"].FirstOrDefault().Item1; |
|||
var SharpDXDXGIVersion = packageVersions["SharpDX.DXGI"].FirstOrDefault().Item1; |
|||
|
|||
context.Information("Package: Serilog, version: {0}", SerilogVersion); |
|||
context.Information("Package: Splat, version: {0}", SplatVersion); |
|||
context.Information("Package: Sprache, version: {0}", SpracheVersion); |
|||
context.Information("Package: System.Reactive, version: {0}", SystemReactiveVersion); |
|||
context.Information("Package: SkiaSharp, version: {0}", SkiaSharpVersion); |
|||
context.Information("Package: SharpDX, version: {0}", SharpDXVersion); |
|||
context.Information("Package: SharpDX.Direct2D1, version: {0}", SharpDXDirect2D1Version); |
|||
context.Information("Package: SharpDX.Direct3D11, version: {0}", SharpDXDirect3D11Version); |
|||
context.Information("Package: SharpDX.DXGI, version: {0}", SharpDXDXGIVersion); |
|||
|
|||
var SetNuGetNuspecCommonProperties = new Action<NuGetPackSettings> ((nuspec) => { |
|||
nuspec.Version = parameters.Version; |
|||
nuspec.Authors = new [] { "Avalonia Team" }; |
|||
nuspec.Owners = new [] { "stevenk" }; |
|||
nuspec.LicenseUrl = new Uri("http://opensource.org/licenses/MIT"); |
|||
nuspec.ProjectUrl = new Uri("https://github.com/AvaloniaUI/Avalonia/"); |
|||
nuspec.RequireLicenseAcceptance = false; |
|||
nuspec.Symbols = false; |
|||
nuspec.NoPackageAnalysis = true; |
|||
nuspec.Description = "The Avalonia UI framework"; |
|||
nuspec.Copyright = "Copyright 2015"; |
|||
nuspec.Tags = new [] { "Avalonia" }; |
|||
}); |
|||
|
|||
var coreLibraries = new string[][] |
|||
{ |
|||
new [] { "./src/", "Avalonia.Animation", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Animation", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Base", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Base", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Controls", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Controls", ".xml" }, |
|||
new [] { "./src/", "Avalonia.DesignerSupport", ".dll" }, |
|||
new [] { "./src/", "Avalonia.DesignerSupport", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Diagnostics", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Diagnostics", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Input", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Input", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Interactivity", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Interactivity", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Layout", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Layout", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Logging.Serilog", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Logging.Serilog", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Visuals", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Visuals", ".xml" }, |
|||
new [] { "./src/", "Avalonia.Styling", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Styling", ".xml" }, |
|||
new [] { "./src/", "Avalonia.ReactiveUI", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Themes.Default", ".dll" }, |
|||
new [] { "./src/", "Avalonia.Themes.Default", ".xml" }, |
|||
new [] { "./src/Markup/", "Avalonia.Markup", ".dll" }, |
|||
new [] { "./src/Markup/", "Avalonia.Markup", ".xml" }, |
|||
new [] { "./src/Markup/", "Avalonia.Markup.Xaml", ".dll" }, |
|||
new [] { "./src/Markup/", "Avalonia.Markup.Xaml", ".xml" } |
|||
}; |
|||
|
|||
var coreLibrariesFiles = coreLibraries.Select((lib) => { |
|||
return (FilePath)context.File(lib[0] + lib[1] + "/bin/" + parameters.DirSuffix + "/" + lib[1] + lib[2]); |
|||
}).ToList(); |
|||
|
|||
var coreLibrariesNuSpecContent = coreLibrariesFiles.Select((file) => { |
|||
return new NuSpecContent { |
|||
Source = file.FullPath, Target = "lib/portable-windows8+net45" |
|||
}; |
|||
}); |
|||
|
|||
var win32CoreLibrariesNuSpecContent = coreLibrariesFiles.Select((file) => { |
|||
return new NuSpecContent { |
|||
Source = file.FullPath, Target = "lib/net45" |
|||
}; |
|||
}); |
|||
|
|||
var netcoreappCoreLibrariesNuSpecContent = coreLibrariesFiles.Select((file) => { |
|||
return new NuSpecContent { |
|||
Source = file.FullPath, Target = "lib/netcoreapp1.0" |
|||
}; |
|||
}); |
|||
|
|||
var net45RuntimePlatformExtensions = new [] {".xml", ".dll"}; |
|||
var net45RuntimePlatform = net45RuntimePlatformExtensions.Select(libSuffix => { |
|||
return new NuSpecContent { |
|||
Source = ((FilePath)context.File("./src/Avalonia.DotNetFrameworkRuntime/bin/" + parameters.DirSuffix + "/Avalonia.DotNetFrameworkRuntime" + libSuffix)).FullPath, |
|||
Target = "lib/net45" |
|||
}; |
|||
}); |
|||
|
|||
var netCoreRuntimePlatformExtensions = new [] {".xml", ".dll"}; |
|||
var netCoreRuntimePlatform = netCoreRuntimePlatformExtensions.Select(libSuffix => { |
|||
return new NuSpecContent { |
|||
Source = ((FilePath)context.File("./src/Avalonia.DotNetCoreRuntime/bin/" + parameters.DirSuffix + "/Avalonia.DotNetCoreRuntime" + libSuffix)).FullPath, |
|||
Target = "lib/netcoreapp1.0" |
|||
}; |
|||
}); |
|||
|
|||
var nuspecNuGetSettingsCore = new [] |
|||
{ |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Serilog", Version = SerilogVersion }, |
|||
new NuSpecDependency() { Id = "Splat", Version = SplatVersion }, |
|||
new NuSpecDependency() { Id = "Sprache", Version = SpracheVersion }, |
|||
new NuSpecDependency() { Id = "System.Reactive", Version = SystemReactiveVersion }, |
|||
new NuSpecDependency() { Id = "System.Threading.ThreadPool", TargetFramework = "netcoreapp1.0", Version = "4.3.0" }, |
|||
//.NET Core |
|||
new NuSpecDependency() { Id = "NETStandard.Library", TargetFramework = "netcoreapp1.0", Version = "1.6.0" }, |
|||
new NuSpecDependency() { Id = "Microsoft.NETCore.Portable.Compatibility", TargetFramework = "netcoreapp1.0", Version = "1.0.1" }, |
|||
new NuSpecDependency() { Id = "Splat", TargetFramework = "netcoreapp1.0", Version = "2.0.0" }, |
|||
new NuSpecDependency() { Id = "Serilog", TargetFramework = "netcoreapp1.0", Version = "2.3.0" }, |
|||
new NuSpecDependency() { Id = "Sprache", TargetFramework = "netcoreapp1.0", Version = SpracheVersion }, |
|||
new NuSpecDependency() { Id = "System.Reactive", TargetFramework = "netcoreapp1.0", Version = SystemReactiveVersion } |
|||
}, |
|||
Files = coreLibrariesNuSpecContent |
|||
.Concat(win32CoreLibrariesNuSpecContent).Concat(net45RuntimePlatform) |
|||
.Concat(netcoreappCoreLibrariesNuSpecContent).Concat(netCoreRuntimePlatform) |
|||
.ToList(), |
|||
BasePath = context.Directory("./"), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.HtmlRenderer |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.HtmlRenderer", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.HtmlRenderer.dll", Target = "lib/portable-windows8+net45" } |
|||
}, |
|||
BasePath = context.Directory("./src/Avalonia.HtmlRenderer/bin/" + parameters.DirSuffix), |
|||
OutputDirectory = parameters.NugetRoot |
|||
} |
|||
}; |
|||
|
|||
var nuspecNuGetSettingsMobile = new [] |
|||
{ |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Android |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Android", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "Avalonia.Skia.Android", Version = parameters.Version } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Android.dll", Target = "lib/MonoAndroid10" } |
|||
}, |
|||
BasePath = context.Directory("./src/Android/Avalonia.Android/bin/" + parameters.DirSuffix), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Skia.Android |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Skia.Android", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "SkiaSharp", Version = SkiaSharpVersion } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Skia.Android.dll", Target = "lib/MonoAndroid10" } |
|||
}, |
|||
BasePath = context.Directory("./src/Skia/Avalonia.Skia.Android/bin/" + parameters.DirSuffix), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.iOS |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.iOS", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "Avalonia.Skia.iOS", Version = parameters.Version } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.iOS.dll", Target = "lib/Xamarin.iOS10" } |
|||
}, |
|||
BasePath = context.Directory("./src/iOS/Avalonia.iOS/bin/" + parameters.DirSuffixIOS), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Skia.iOS |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Skia.iOS", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "SkiaSharp", Version = SkiaSharpVersion } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Skia.iOS.dll", Target = "lib/Xamarin.iOS10" } |
|||
}, |
|||
BasePath = context.Directory("./src/Skia/Avalonia.Skia.iOS/bin/" + parameters.DirSuffixIOS), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Mobile |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Mobile", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia.Android", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "Avalonia.iOS", Version = parameters.Version } |
|||
}, |
|||
Files = new NuSpecContent[] |
|||
{ |
|||
new NuSpecContent { Source = "licence.md", Target = "" } |
|||
}, |
|||
BasePath = context.Directory("./"), |
|||
OutputDirectory = parameters.NugetRoot |
|||
} |
|||
}; |
|||
|
|||
var nuspecNuGetSettingsDesktop = new [] |
|||
{ |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Win32 |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Win32", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Win32/bin/" + parameters.DirSuffix + "/Avalonia.Win32.dll", Target = "lib/net45" }, |
|||
new NuSpecContent { Source = "Avalonia.Win32.NetStandard/bin/" + parameters.DirSuffix + "/Avalonia.Win32.dll", Target = "lib/netstandard1.1" } |
|||
}, |
|||
BasePath = context.Directory("./src/Windows"), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Direct2D1 |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Direct2D1", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "SharpDX", Version = SharpDXVersion }, |
|||
new NuSpecDependency() { Id = "SharpDX.Direct2D1", Version = SharpDXDirect2D1Version }, |
|||
new NuSpecDependency() { Id = "SharpDX.Direct3D11", Version = SharpDXDirect3D11Version }, |
|||
new NuSpecDependency() { Id = "SharpDX.DXGI", Version = SharpDXDXGIVersion } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Direct2D1.dll", Target = "lib/net45" } |
|||
}, |
|||
BasePath = context.Directory("./src/Windows/Avalonia.Direct2D1/bin/" + parameters.DirSuffix), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Gtk |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Gtk", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Gtk.dll", Target = "lib/net45" } |
|||
}, |
|||
BasePath = context.Directory("./src/Gtk/Avalonia.Gtk/bin/" + parameters.DirSuffix), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Gtk3 |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Gtk3", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Gtk3.dll", Target = "lib/netstandard1.1" } |
|||
}, |
|||
BasePath = context.Directory("./src/Gtk/Avalonia.Gtk3/bin/" + parameters.DirSuffix), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Cairo |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Cairo", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Cairo.dll", Target = "lib/net45" } |
|||
}, |
|||
BasePath = context.Directory("./src/Gtk/Avalonia.Cairo/bin/" + parameters.DirSuffix), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Skia.Desktop |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Skia.Desktop", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "SkiaSharp", Version = SkiaSharpVersion }, |
|||
//.NET Core |
|||
new NuSpecDependency() { Id = "Avalonia", TargetFramework = "netcoreapp1.0", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "SkiaSharp", TargetFramework = "netcoreapp1.0", Version = SkiaSharpVersion }, |
|||
new NuSpecDependency() { Id = "NETStandard.Library", TargetFramework = "netcoreapp1.0", Version = "1.6.0" }, |
|||
new NuSpecDependency() { Id = "Microsoft.NETCore.Portable.Compatibility", TargetFramework = "netcoreapp1.0", Version = "1.0.1" } |
|||
}, |
|||
Files = new [] |
|||
{ |
|||
new NuSpecContent { Source = "Avalonia.Skia.Desktop/bin/" + parameters.DirSuffixSkia + "/Avalonia.Skia.Desktop.dll", Target = "lib/net45" }, |
|||
new NuSpecContent { Source = "Avalonia.Skia.Desktop.NetStandard/bin/" + parameters.DirSuffix + "/Avalonia.Skia.Desktop.dll", Target = "lib/netcoreapp1.0" } |
|||
}, |
|||
BasePath = context.Directory("./src/Skia/"), |
|||
OutputDirectory = parameters.NugetRoot |
|||
}, |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
// Avalonia.Desktop |
|||
/////////////////////////////////////////////////////////////////////////////// |
|||
new NuGetPackSettings() |
|||
{ |
|||
Id = "Avalonia.Desktop", |
|||
Dependencies = new [] |
|||
{ |
|||
new NuSpecDependency() { Id = "Avalonia.Win32", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "Avalonia.Direct2D1", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "Avalonia.Gtk", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "Avalonia.Cairo", Version = parameters.Version }, |
|||
new NuSpecDependency() { Id = "Avalonia.Skia.Desktop", Version = parameters.Version } |
|||
}, |
|||
Files = new NuSpecContent[] |
|||
{ |
|||
new NuSpecContent { Source = "licence.md", Target = "" } |
|||
}, |
|||
BasePath = context.Directory("./"), |
|||
OutputDirectory = parameters.NugetRoot |
|||
} |
|||
}; |
|||
|
|||
NuspecNuGetSettings = new List<NuGetPackSettings>(); |
|||
|
|||
NuspecNuGetSettings.AddRange(nuspecNuGetSettingsCore); |
|||
NuspecNuGetSettings.AddRange(nuspecNuGetSettingsDesktop); |
|||
NuspecNuGetSettings.AddRange(nuspecNuGetSettingsMobile); |
|||
|
|||
NuspecNuGetSettings.ForEach((nuspec) => SetNuGetNuspecCommonProperties(nuspec)); |
|||
|
|||
NugetPackages = NuspecNuGetSettings.Select(nuspec => { |
|||
return nuspec.OutputDirectory.CombineWithFilePath(string.Concat(nuspec.Id, ".", nuspec.Version, ".nupkg")); |
|||
}).ToArray(); |
|||
|
|||
BinFiles = NuspecNuGetSettings.SelectMany(nuspec => { |
|||
return nuspec.Files.Select(file => { |
|||
return ((DirectoryPath)nuspec.BasePath).CombineWithFilePath(file.Source); |
|||
}); |
|||
}).GroupBy(f => f.FullPath).Select(g => g.First()).ToArray(); |
|||
} |
|||
} |
|||
@ -0,0 +1,143 @@ |
|||
public class Parameters |
|||
{ |
|||
public string Target { get; private set; } |
|||
public string Platform { get; private set; } |
|||
public string Configuration { get; private set; } |
|||
public bool SkipTests { get; private set; } |
|||
public string MainRepo { get; private set; } |
|||
public string MasterBranch { get; private set; } |
|||
public string AssemblyInfoPath { get; private set; } |
|||
public string ReleasePlatform { get; private set; } |
|||
public string ReleaseConfiguration { get; private set; } |
|||
public string MSBuildSolution { get; private set; } |
|||
public string XBuildSolution { get; private set; } |
|||
public bool IsPlatformAnyCPU { get; private set; } |
|||
public bool IsPlatformX86 { get; private set; } |
|||
public bool IsPlatformX64 { get; private set; } |
|||
public bool IsLocalBuild { get; private set; } |
|||
public bool IsRunningOnUnix { get; private set; } |
|||
public bool IsRunningOnWindows { get; private set; } |
|||
public bool IsRunningOnAppVeyor { get; private set; } |
|||
public bool IsPullRequest { get; private set; } |
|||
public bool IsMainRepo { get; private set; } |
|||
public bool IsMasterBranch { get; private set; } |
|||
public bool IsTagged { get; private set; } |
|||
public bool IsReleasable { get; private set; } |
|||
public bool IsMyGetRelease { get; private set; } |
|||
public bool IsNuGetRelease { get; private set; } |
|||
public string Version { get; private set; } |
|||
public DirectoryPath ArtifactsDir { get; private set; } |
|||
public DirectoryPath NugetRoot { get; private set; } |
|||
public DirectoryPath ZipRoot { get; private set; } |
|||
public DirectoryPath BinRoot { get; private set; } |
|||
public DirectoryPath TestsRoot { get; private set; } |
|||
public string DirSuffix { get; private set; } |
|||
public string DirSuffixSkia { get; private set; } |
|||
public string DirSuffixIOS { get; private set; } |
|||
public DirectoryPathCollection BuildDirs { get; private set; } |
|||
public string FileZipSuffix { get; private set; } |
|||
public FilePath ZipCoreArtifacts { get; private set; } |
|||
public DirectoryPath ZipSourceControlCatalogDesktopDirs { get; private set; } |
|||
public FilePath ZipTargetControlCatalogDesktopDirs { get; private set; } |
|||
|
|||
public Parameters(ICakeContext context) |
|||
{ |
|||
var buildSystem = context.BuildSystem(); |
|||
|
|||
// ARGUMENTS |
|||
Target = context.Argument("target", "Default"); |
|||
Platform = context.Argument("platform", "Any CPU"); |
|||
Configuration = context.Argument("configuration", "Release"); |
|||
SkipTests = context.HasArgument("skip-tests"); |
|||
|
|||
// CONFIGURATION |
|||
MainRepo = "AvaloniaUI/Avalonia"; |
|||
MasterBranch = "master"; |
|||
AssemblyInfoPath = context.File("./src/Shared/SharedAssemblyInfo.cs"); |
|||
ReleasePlatform = "Any CPU"; |
|||
ReleaseConfiguration = "Release"; |
|||
MSBuildSolution = "./Avalonia.sln"; |
|||
XBuildSolution = "./Avalonia.XBuild.sln"; |
|||
|
|||
// PARAMETERS |
|||
IsPlatformAnyCPU = StringComparer.OrdinalIgnoreCase.Equals(Platform, "Any CPU"); |
|||
IsPlatformX86 = StringComparer.OrdinalIgnoreCase.Equals(Platform, "x86"); |
|||
IsPlatformX64 = StringComparer.OrdinalIgnoreCase.Equals(Platform, "x64"); |
|||
IsLocalBuild = buildSystem.IsLocalBuild; |
|||
IsRunningOnUnix = context.IsRunningOnUnix(); |
|||
IsRunningOnWindows = context.IsRunningOnWindows(); |
|||
IsRunningOnAppVeyor = buildSystem.AppVeyor.IsRunningOnAppVeyor; |
|||
IsPullRequest = buildSystem.AppVeyor.Environment.PullRequest.IsPullRequest; |
|||
IsMainRepo = StringComparer.OrdinalIgnoreCase.Equals(MainRepo, buildSystem.AppVeyor.Environment.Repository.Name); |
|||
IsMasterBranch = StringComparer.OrdinalIgnoreCase.Equals(MasterBranch, buildSystem.AppVeyor.Environment.Repository.Branch); |
|||
IsTagged = buildSystem.AppVeyor.Environment.Repository.Tag.IsTag |
|||
&& !string.IsNullOrWhiteSpace(buildSystem.AppVeyor.Environment.Repository.Tag.Name); |
|||
IsReleasable = StringComparer.OrdinalIgnoreCase.Equals(ReleasePlatform, Platform) |
|||
&& StringComparer.OrdinalIgnoreCase.Equals(ReleaseConfiguration, Configuration); |
|||
IsMyGetRelease = !IsTagged && IsReleasable; |
|||
IsNuGetRelease = IsTagged && IsReleasable; |
|||
|
|||
// VERSION |
|||
Version = context.Argument("force-nuget-version", context.ParseAssemblyInfo(AssemblyInfoPath).AssemblyVersion); |
|||
|
|||
if (IsRunningOnAppVeyor) |
|||
{ |
|||
if (IsTagged) |
|||
{ |
|||
// Use Tag Name as version |
|||
Version = buildSystem.AppVeyor.Environment.Repository.Tag.Name; |
|||
} |
|||
else |
|||
{ |
|||
// Use AssemblyVersion with Build as version |
|||
Version += "-build" + context.EnvironmentVariable("APPVEYOR_BUILD_NUMBER") + "-alpha"; |
|||
} |
|||
} |
|||
|
|||
// DIRECTORIES |
|||
ArtifactsDir = (DirectoryPath)context.Directory("./artifacts"); |
|||
NugetRoot = ArtifactsDir.Combine("nuget"); |
|||
ZipRoot = ArtifactsDir.Combine("zip"); |
|||
BinRoot = ArtifactsDir.Combine("bin"); |
|||
TestsRoot = ArtifactsDir.Combine("tests"); |
|||
|
|||
DirSuffix = Configuration; |
|||
DirSuffixSkia = (IsPlatformAnyCPU ? "x86" : Platform) + "/" + Configuration; |
|||
DirSuffixIOS = "iPhone" + "/" + Configuration; |
|||
|
|||
BuildDirs = |
|||
context.GetDirectories("./src/**/bin/" + DirSuffix) + |
|||
context.GetDirectories("./src/**/obj/" + DirSuffix) + |
|||
context.GetDirectories("./src/Markup/**/bin/" + DirSuffix) + |
|||
context.GetDirectories("./src/Markup/**/obj/" + DirSuffix) + |
|||
context.GetDirectories("./src/Android/**/bin/" + DirSuffix) + |
|||
context.GetDirectories("./src/Android/**/obj/" + DirSuffix) + |
|||
context.GetDirectories("./src/Gtk/**/bin/" + DirSuffix) + |
|||
context.GetDirectories("./src/Gtk/**/obj/" + DirSuffix) + |
|||
context.GetDirectories("./src/iOS/**/bin/" + DirSuffixIOS) + |
|||
context.GetDirectories("./src/iOS/**/obj/" + DirSuffixIOS) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Android/bin/" + DirSuffix) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Android/obj/" + DirSuffix) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Android.TestApp/bin/" + DirSuffix) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Android.TestApp/obj/" + DirSuffix) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Desktop/bin/" + DirSuffixSkia) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Desktop/obj/" + DirSuffixSkia) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Desktop.NetStandard/bin/" + DirSuffix) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.Desktop.NetStandard/obj/" + DirSuffix) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.iOS/bin/" + DirSuffixIOS) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.iOS/obj/" + DirSuffixIOS) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.iOS.TestApp/bin/" + DirSuffixIOS) + |
|||
(DirectoryPath)context.Directory("./src/Skia/Avalonia.Skia.iOS.TestApp/obj/" + DirSuffixIOS) + |
|||
context.GetDirectories("./src/Windows/**/bin/" + DirSuffix) + |
|||
context.GetDirectories("./src/Windows/**/obj/" + DirSuffix) + |
|||
context.GetDirectories("./tests/**/bin/" + DirSuffix) + |
|||
context.GetDirectories("./tests/**/obj/" + DirSuffix) + |
|||
context.GetDirectories("./Samples/**/bin/" + DirSuffix) + |
|||
context.GetDirectories("./Samples/**/obj/" + DirSuffix); |
|||
|
|||
FileZipSuffix = Version + ".zip"; |
|||
ZipCoreArtifacts = ZipRoot.CombineWithFilePath("Avalonia-" + FileZipSuffix); |
|||
ZipSourceControlCatalogDesktopDirs = (DirectoryPath)context.Directory("./samples/ControlCatalog.Desktop/bin/" + DirSuffix); |
|||
ZipTargetControlCatalogDesktopDirs = ZipRoot.CombineWithFilePath("ControlCatalog.Desktop-" + FileZipSuffix); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue