Skip to content

Commit 0460da1

Browse files
committed
Fix exception & support custom dlls in scripts
1 parent 950c44d commit 0460da1

File tree

4 files changed

+53
-14
lines changed

4 files changed

+53
-14
lines changed

Sdk/Sdk.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<PackageReference Include="Nito.AsyncEx.Tasks" Version="5.1.2" PrivateAssets="all" />
3939
<PackageReference Include="Skyline.DataMiner.CICD.Common" Version="1.0.5-alpha" PrivateAssets="all" />
4040
<PackageReference Include="Skyline.DataMiner.CICD.Parsers.Common" Version="1.0.13-foxtrot" PrivateAssets="all" />
41-
<PackageReference Include="Skyline.DataMiner.CICD.Assemblers.Automation" Version="1.0.15" PrivateAssets="all" />
41+
<PackageReference Include="Skyline.DataMiner.CICD.Assemblers.Automation" Version="1.0.16-alpha" PrivateAssets="all" />
4242
<PackageReference Include="Skyline.DataMiner.Core.AppPackageCreator" Version="1.0.4" PrivateAssets="all" />
4343
</ItemGroup>
4444

Sdk/Sdk/Sdk.targets

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
ProjectFile="$(MSBuildProjectFile)"
1212
ProjectType="$(DataMinerType)"
1313
BaseOutputPath="$(BaseOutputPath)"
14+
Configuraiton="$(Configuration)"
1415
Version="$(Version)"
1516
MinimumSupportedDmVersion="$(MinimumSupportedDmVersion)"
1617
/>

Sdk/SubTasks/AutomationScriptStyle.cs

+41-5
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,9 @@ public static async Task<PackageResult> TryCreatePackage(PackageCreationData dat
6262
{
6363
appPackageAutomationScriptBuilder = new AppPackageAutomationScript.AppPackageAutomationScriptBuilder(script.Name, data.Version, ConvertToBytes(buildResultItems.Document));
6464
}
65-
66-
foreach (PackageAssemblyReference packageAssemblyReference in buildResultItems.Assemblies)
67-
{
68-
appPackageAutomationScriptBuilder.WithAssembly(packageAssemblyReference.AssemblyPath, packageAssemblyReference.AssemblyPath);
69-
}
65+
66+
AddNuGetAssemblies(buildResultItems, appPackageAutomationScriptBuilder);
67+
AddDllAssemblies(buildResultItems, appPackageAutomationScriptBuilder);
7068

7169
result.Script = appPackageAutomationScriptBuilder.Build();
7270
result.IsSuccess = true;
@@ -80,6 +78,44 @@ public static async Task<PackageResult> TryCreatePackage(PackageCreationData dat
8078
return result;
8179
}
8280

81+
private static void AddDllAssemblies(BuildResultItems buildResultItems, AppPackageAutomationScript.AppPackageAutomationScriptBuilder appPackageAutomationScriptBuilder)
82+
{
83+
foreach (DllAssemblyReference assemblyReference in buildResultItems.DllAssemblies)
84+
{
85+
if (assemblyReference.AssemblyPath == null)
86+
{
87+
continue;
88+
}
89+
90+
string folder = @"C:\Skyline DataMiner\ProtocolScripts";
91+
if (assemblyReference.IsFilesPackage)
92+
{
93+
folder = @"C:\Skyline DataMiner\Files";
94+
}
95+
96+
var destinationFolderPath = FileSystem.Instance.Path.Combine(folder, assemblyReference.DllImport);
97+
var destinationDirectory = FileSystem.Instance.Path.GetDirectoryName(destinationFolderPath);
98+
99+
appPackageAutomationScriptBuilder.WithAssembly(assemblyReference.AssemblyPath, destinationDirectory);
100+
}
101+
}
102+
103+
private static void AddNuGetAssemblies(BuildResultItems buildResultItems, AppPackageAutomationScript.AppPackageAutomationScriptBuilder appPackageAutomationScriptBuilder)
104+
{
105+
foreach (PackageAssemblyReference assemblyReference in buildResultItems.Assemblies)
106+
{
107+
if (assemblyReference.AssemblyPath == null)
108+
{
109+
continue;
110+
}
111+
112+
var destinationFolderPath = FileSystem.Instance.Path.Combine(@"C:\Skyline DataMiner\ProtocolScripts\DllImport", assemblyReference.DllImport);
113+
var destinationDirectory = FileSystem.Instance.Path.GetDirectoryName(destinationFolderPath);
114+
115+
appPackageAutomationScriptBuilder.WithAssembly(assemblyReference.AssemblyPath, destinationDirectory);
116+
}
117+
}
118+
83119
public class PackageResult
84120
{
85121
public IAppPackageAutomationScript Script { get; set; }

Sdk/Tasks/DmappCreation.cs

+10-8
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ public class DmappCreation : Task, ICancelableTask
2525
public string ProjectFile { get; set; }
2626
public string ProjectType { get; set; }
2727
public string BaseOutputPath { get; set; }
28+
public string Configuration { get; set; }
2829
public string Version { get; set; }
29-
public string MinimumSupportedDmVersion { get; set; }
30+
public string MinimumRequiredDmVersion { get; set; }
3031

3132
public override bool Execute()
3233
{
@@ -85,7 +86,7 @@ public override bool Execute()
8586
return false;
8687
}
8788

88-
string destinationFilePath = Path.Combine(BaseOutputPath, $"{preparedData.Project.ProjectName}.{Version}.dmapp");
89+
string destinationFilePath = Path.Combine(BaseOutputPath, Configuration, $"{preparedData.Project.ProjectName}.{Version}.dmapp");
8990
IAppPackage package = appPackageBuilder.Build();
9091
string about = package.CreatePackage(destinationFilePath);
9192
Log.LogMessage(MessageImportance.Low, $"About created package:{Environment.NewLine}{about}");
@@ -106,14 +107,15 @@ public override bool Execute()
106107
private bool TryCreateAppPackageBuilder(PackageCreationData preparedData, DataMinerProjectType dataMinerProjectType,
107108
out AppPackage.AppPackageBuilder appPackageBuilder)
108109
{
109-
appPackageBuilder = new AppPackage.AppPackageBuilder(preparedData.Project.ProjectName, Version, preparedData.MinimumSupportedDmVersion);
110+
appPackageBuilder = null;
110111

111112
if (dataMinerProjectType != DataMinerProjectType.Package)
112113
{
114+
appPackageBuilder = new AppPackage.AppPackageBuilder(preparedData.Project.ProjectName, Version, preparedData.MinimumRequiredDmVersion);
113115
return true;
114116
}
115117

116-
// Create custom install script.
118+
// Create package with this project as the install script.
117119
AutomationScriptStyle.PackageResult packageResult = AutomationScriptStyle.TryCreatePackage(preparedData, createAsTempFile: true).WaitAndUnwrapException();
118120

119121
if (!packageResult.IsSuccess)
@@ -123,7 +125,7 @@ private bool TryCreateAppPackageBuilder(PackageCreationData preparedData, DataMi
123125
}
124126

125127
var installScript = new AppPackageScript(packageResult.Script.Script, packageResult.Script.Assemblies.Select(assembly => assembly.AssemblyFilePath));
126-
appPackageBuilder = new AppPackage.AppPackageBuilder(preparedData.Project.ProjectName, Version, preparedData.MinimumSupportedDmVersion, installScript);
128+
appPackageBuilder = new AppPackage.AppPackageBuilder(preparedData.Project.ProjectName, Version, preparedData.MinimumRequiredDmVersion, installScript);
127129

128130
return true;
129131
}
@@ -153,7 +155,7 @@ private PackageCreationData PrepareData()
153155
}
154156

155157
string version = GlobalDefaults.MinimumSupportDataMinerVersionForDMApp;
156-
if (DataMinerVersion.TryParse(MinimumSupportedDmVersion, out DataMinerVersion dmVersion))
158+
if (DataMinerVersion.TryParse(MinimumRequiredDmVersion, out DataMinerVersion dmVersion))
157159
{
158160
version = dmVersion.ToStrictString();
159161
}
@@ -163,7 +165,7 @@ private PackageCreationData PrepareData()
163165
Project = project,
164166
LinkedProjects = referencedProjects,
165167
Version = Version,
166-
MinimumSupportedDmVersion = version
168+
MinimumRequiredDmVersion = version
167169
};
168170
}
169171

@@ -175,7 +177,7 @@ internal class PackageCreationData
175177

176178
public string Version { get; set; }
177179

178-
public string MinimumSupportedDmVersion { get; set; }
180+
public string MinimumRequiredDmVersion { get; set; }
179181
}
180182
}
181183
}

0 commit comments

Comments
 (0)