Skip to content

Commit d040232

Browse files
Testing multiple tasks
1 parent 7c69e88 commit d040232

File tree

3 files changed

+107
-3
lines changed

3 files changed

+107
-3
lines changed

Sdk/Sdk.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<BuildOutputTargetFolder>Sdk</BuildOutputTargetFolder>
2424
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
2525
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
26-
<PackageVersion>0.1.0</PackageVersion>
26+
<PackageVersion>0.1.10</PackageVersion>
2727
</PropertyGroup>
2828

2929
<ItemGroup>
@@ -40,7 +40,7 @@
4040
<PackageReference Include="Skyline.DataMiner.CICD.Common" Version="1.0.5-alpha" PrivateAssets="all" />
4141
<PackageReference Include="Skyline.DataMiner.CICD.Parsers.Common" Version="1.0.13-foxtrot" PrivateAssets="all" />
4242
<PackageReference Include="Skyline.DataMiner.CICD.Assemblers.Automation" Version="1.0.16-alpha" PrivateAssets="all" />
43-
<PackageReference Include="Skyline.DataMiner.Core.AppPackageCreator" Version="1.0.4" PrivateAssets="all" />
43+
<PackageReference Include="Skyline.DataMiner.Core.AppPackageCreator" Version="2.0.0-alpha2" PrivateAssets="all" />
4444
<PackageReference Include="System.Text.Json" Version="9.0.0" PrivateAssets="all" />
4545
</ItemGroup>
4646

Sdk/Sdk/Sdk.targets

+12-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" Condition=" '$(CommonTargetsPath)' == '' " />
44

55
<!-- Declare which tasks will be used later -->
6-
<UsingTask TaskName="DmappCreation" AssemblyFile="$(MSBuildThisFileDirectory)\netstandard2.0\Skyline.DataMiner.Sdk.dll"/>
6+
<UsingTask TaskName="Skyline.DataMiner.Sdk.Tasks.DmappCreation" AssemblyFile="$(MSBuildThisFileDirectory)\netstandard2.0\Skyline.DataMiner.Sdk.dll"/>
7+
<UsingTask TaskName="Skyline.DataMiner.Sdk.Tasks.CatalogInformation" AssemblyFile="$(MSBuildThisFileDirectory)\netstandard2.0\Skyline.DataMiner.Sdk.dll"/>
78

89
<!-- Custom target that will run after the build -->
910
<Target Name="DmappCreation" AfterTargets="Build" Condition="'$(GenerateDataMinerPackage)' == 'true'">
@@ -19,4 +20,14 @@
1920
MinimumRequiredDmVersion="$(MinimumRequiredDmVersion)"
2021
/>
2122
</Target>
23+
24+
<Target Name="CatalogInformation" AfterTargets="DmappCreation" Condition="'$(GenerateDataMinerPackage)' == 'true'">
25+
<CatalogInformation
26+
ProjectDirectory="$(MSBuildProjectDirectory)"
27+
BaseOutputPath="$(BaseOutputPath)"
28+
Configuration="$(Configuration)"
29+
PackageId="$(PackageId)"
30+
PackageVersion="$(PackageVersion)"
31+
/>
32+
</Target>
2233
</Project>

Sdk/Tasks/CatalogInformation.cs

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
2+
3+
namespace Skyline.DataMiner.Sdk.Tasks
4+
{
5+
using System;
6+
using System.Diagnostics;
7+
using System.IO.Compression;
8+
9+
using Microsoft.Build.Framework;
10+
11+
using Skyline.DataMiner.CICD.FileSystem;
12+
13+
using Task = Microsoft.Build.Utilities.Task;
14+
15+
public class CatalogInformation : Task, ICancelableTask
16+
{
17+
private bool cancel;
18+
19+
#region Properties set from targets file
20+
21+
public string BaseOutputPath { get; set; }
22+
23+
public string Configuration { get; set; }
24+
25+
public string PackageId { get; set; }
26+
27+
public string PackageVersion { get; set; }
28+
29+
public string ProjectDirectory { get; set; }
30+
31+
#endregion Properties set from targets file
32+
33+
/// <summary>
34+
/// Cancel the ongoing task
35+
/// </summary>
36+
public void Cancel()
37+
{
38+
cancel = true;
39+
}
40+
41+
public override bool Execute()
42+
{
43+
Stopwatch timer = Stopwatch.StartNew();
44+
45+
try
46+
{
47+
if (cancel)
48+
{
49+
// Early cancel if necessary
50+
return true;
51+
}
52+
// zip the CatalogInformation if it exists.
53+
var fs = FileSystem.Instance;
54+
var catalogInformationFolder = fs.Path.Combine(ProjectDirectory, "CatalogInformation");
55+
56+
if (fs.Directory.Exists(catalogInformationFolder))
57+
{
58+
// Store zip in bin\{Debug/Release} folder, similar like nupkg files.
59+
string baseLocation = BaseOutputPath;
60+
if (!fs.Path.IsPathRooted(BaseOutputPath))
61+
{
62+
// Relative path (starting from project directory
63+
baseLocation = fs.Path.GetFullPath(fs.Path.Combine(ProjectDirectory, BaseOutputPath));
64+
}
65+
66+
string destinationFilePath = fs.Path.Combine(baseLocation, Configuration, $"{PackageId}.{PackageVersion}.CatalogInformation.zip");
67+
fs.Directory.CreateDirectory(fs.Path.GetDirectoryName(destinationFilePath));
68+
69+
ZipFile.CreateFromDirectory(catalogInformationFolder, destinationFilePath, CompressionLevel.Optimal, includeBaseDirectory: false);
70+
71+
Log.LogMessage(MessageImportance.Low, $"CatalogInformation zipped to {destinationFilePath}");
72+
}
73+
74+
if (cancel)
75+
{
76+
return false;
77+
}
78+
79+
return !Log.HasLoggedErrors;
80+
}
81+
catch (Exception e)
82+
{
83+
Log.LogError($"Unexpected exception occurred during catalog information creation: {e}");
84+
return false;
85+
}
86+
finally
87+
{
88+
timer.Stop();
89+
Log.LogMessage(MessageImportance.High, $"Catalog information creation took {timer.ElapsedMilliseconds} ms.");
90+
}
91+
}
92+
}
93+
}

0 commit comments

Comments
 (0)