using System.IO.Compression; using Build; using GlobExpressions; using static Bullseye.Targets; using static SimpleExec.Command; const string CLEAN = "clean"; const string BUILD = "build"; const string ZIP = "zip"; const string RESTORE_TOOLS = "restore-tools"; const string BUILD_SERVER_VERSION = "build-server-version"; //need to pass arguments /*var arguments = new List(); if (args.Length > 1) { arguments = args.ToList(); args = new[] { arguments.First() }; //arguments = arguments.Skip(1).ToList(); }*/ Target( CLEAN, ForEach("**/output"), dir => { IEnumerable GetDirectories(string d) { return Glob.Directories(".", d); } void RemoveDirectory(string d) { if (Directory.Exists(d)) { Console.WriteLine(d); Directory.Delete(d, true); } } foreach (var d in GetDirectories(dir)) { RemoveDirectory(d); } } ); Target( RESTORE_TOOLS, () => { Run("dotnet", "tool restore"); } ); Target( BUILD_SERVER_VERSION, DependsOn(RESTORE_TOOLS), () => { Run("dotnet", "tool run dotnet-gitversion /output json /output buildserver"); } ); Target( BUILD, Consts.Solutions, s => { var version = Environment.GetEnvironmentVariable("GitVersion_FullSemVer") ?? "3.0.0-fakeVersion2"; var fileVersion = Environment.GetEnvironmentVariable("GitVersion_AssemblySemFileVer") ?? "3.0.0.1234"; Console.WriteLine($"Version: {version} & {fileVersion}"); Run("msbuild", $"{s} /p:Configuration=ReleaseAC27 /p:Version={version} /p:FileVersion={fileVersion}"); } ); Target( ZIP, DependsOn(BUILD), Consts.InstallerManifests, x => { var outputDir = Path.Combine(".", "output"); var slugDir = Path.Combine(outputDir, x.HostAppSlug); Directory.CreateDirectory(outputDir); Directory.CreateDirectory(slugDir); foreach (var asset in x.Projects) { var fullPath = Path.Combine(".", asset.OutputPath); if (!Directory.Exists(fullPath)) { throw new InvalidOperationException("Could not find: " + fullPath); } var assetName = asset.ConnectorVersion; var connectorDir = Path.Combine(slugDir, assetName); Directory.CreateDirectory(connectorDir); foreach (var directory in Directory.EnumerateDirectories(fullPath, asset.GlobPattern, SearchOption.AllDirectories)) { Directory.CreateDirectory(directory.Replace(fullPath, connectorDir)); } foreach (var file in Directory.EnumerateFiles(fullPath, asset.GlobPattern, SearchOption.AllDirectories)) { Console.WriteLine(file); var destFileName = file.Replace(fullPath, connectorDir); File.Copy(file, destFileName, true); } } var outputPath = Path.Combine(outputDir, $"{x.HostAppSlug}.zip"); File.Delete(outputPath); Console.WriteLine($"Zipping: '{slugDir}' to '{outputPath}'"); ZipFile.CreateFromDirectory(slugDir, outputPath); // Directory.Delete(slugDir, true); } ); Target("default", DependsOn(ZIP), () => Console.WriteLine("Done!")); await RunTargetsAndExitAsync(args).ConfigureAwait(true);