diff --git a/src/Snap.Installer.Tests/ProgramTests.cs b/src/Snap.Installer.Tests/ProgramTests.cs
index 8828d82d..e4012e1a 100644
--- a/src/Snap.Installer.Tests/ProgramTests.cs
+++ b/src/Snap.Installer.Tests/ProgramTests.cs
@@ -106,7 +106,7 @@ public async Task TestInstall_Offline_Using_Local_PackageSource()
using var genesisPackageContext = await _baseFixturePackaging.BuildPackageAsync(genesisSnapReleaseBuilder, cts.Token);
var releasesFilename = _snapFilesystem.PathCombine(snapInstallerIoEnvironment.ThisExeWorkingDirectory, genesisPackageContext.FullPackageSnapApp.BuildNugetReleasesFilename());
- var snapAppDllFilename = _snapFilesystem.PathCombine(snapInstallerIoEnvironment.ThisExeWorkingDirectory, SnapConstants.SnapAppDllFilename);
+ var snapAppDllFilename = _snapFilesystem.PathCombine(snapInstallerIoEnvironment.ThisExeWorkingDirectory, SnapConstants.SnapAppYamlFilename);
var setupNupkgFilename = _snapFilesystem.PathCombine(snapInstallerIoEnvironment.ThisExeWorkingDirectory, SnapConstants.SetupNupkgFilename);
await using var releasePackageMemoryStream = _snapPack.BuildReleasesPackage(genesisSnapApp, snapAppsReleases);
@@ -114,8 +114,8 @@ public async Task TestInstall_Offline_Using_Local_PackageSource()
await _snapFilesystem.FileWriteAsync(genesisPackageContext.FullPackageMemoryStream, setupNupkgFilename, cts.Token);
await _snapFilesystem.FileWriteAsync(releasePackageMemoryStream, releasesFilename, cts.Token);
- using var snapAppDllAssemblyDefinition = _snapAppWriter.BuildSnapAppAssembly(genesisSnapApp);
- snapAppDllAssemblyDefinition.Write(snapAppDllFilename);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(genesisSnapApp);
+ await _snapFilesystem.FileWriteAsync(snapAppYamlStream, snapAppDllFilename, default);
var (exitCode, installerType) = await Program.MainImplAsync(["--headless"], LogLevel.Info, cts, _snapOsMock.Object, x =>
{
@@ -142,7 +142,7 @@ public async Task TestInstall_Offline_Using_Local_PackageSource()
{
throw new PlatformNotSupportedException();
}
- Assert.EndsWith(SnapConstants.SnapAppDllFilename, files[1]);
+ Assert.EndsWith(SnapConstants.SnapAppYamlFilename, files[1]);
Assert.EndsWith(SnapConstants.SnapDllFilename, files[2]);
}
@@ -202,12 +202,12 @@ public async Task TestInstall_Web_Using_Local_PackageSource()
using var update1PackageContext = await _baseFixturePackaging.BuildPackageAsync(update1SnapReleaseBuilder, cts.Token);
using var update2PackageContext = await _baseFixturePackaging.BuildPackageAsync(update2SnapReleaseBuilder, cts.Token);
- var snapAppDllFilename = _snapFilesystem.PathCombine(snapInstallerIoEnvironment.ThisExeWorkingDirectory, SnapConstants.SnapAppDllFilename);
+ var snapAppDllFilename = _snapFilesystem.PathCombine(snapInstallerIoEnvironment.ThisExeWorkingDirectory, SnapConstants.SnapAppYamlFilename);
await using var releasePackageMemoryStream = _snapPack.BuildReleasesPackage(genesisSnapApp, snapAppsReleases);
- using var snapAppDllAssemblyDefinition = _snapAppWriter.BuildSnapAppAssembly(genesisSnapApp);
- snapAppDllAssemblyDefinition.Write(snapAppDllFilename);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(genesisSnapApp);
+ await _snapFilesystem.FileWriteAsync(snapAppYamlStream, snapAppDllFilename, cts.Token);
await genesisPackageContext.WriteToAsync(packagesDirectory, _snapFilesystem, cts.Token, writeDeltaNupkg: false);
await update1PackageContext.WriteToAsync(packagesDirectory, _snapFilesystem, cts.Token, writeFullNupkg: false);
@@ -243,7 +243,7 @@ public async Task TestInstall_Web_Using_Local_PackageSource()
throw new PlatformNotSupportedException();
}
Assert.EndsWith(mainExecutable.BuildRuntimeConfigFilename(_snapFilesystem), files[1]);
- Assert.EndsWith(SnapConstants.SnapAppDllFilename, files[2]);
+ Assert.EndsWith(SnapConstants.SnapAppYamlFilename, files[2]);
Assert.EndsWith(SnapConstants.SnapDllFilename, files[3]);
Assert.EndsWith("test1.dll", files[4]);
Assert.EndsWith("test2.dll", files[5]);
@@ -258,4 +258,4 @@ void SetupSnapOsMock([NotNull] ISnapOsSpecialFolders specialFolders)
_snapOsMock.Setup(x => x.SpecialFolders).Returns(specialFolders);
_snapOsMock.Setup(x => x.ProcessManager).Returns(_snapOsProcessManager);
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap.Installer/Program.Install.cs b/src/Snap.Installer/Program.Install.cs
index 18d94ed1..9d5bcd22 100644
--- a/src/Snap.Installer/Program.Install.cs
+++ b/src/Snap.Installer/Program.Install.cs
@@ -92,7 +92,7 @@ async Task InstallInBackgroundAsync(IMainWindowViewModel mainWindowViewModel)
diskLogger.Debug($"{nameof(environment.Io.WorkingDirectory)}: {environment.Io.WorkingDirectory}");
diskLogger.Debug($"{nameof(environment.Io.ThisExeWorkingDirectory)}: {environment.Io.ThisExeWorkingDirectory}");
- var snapAppDllAbsolutePath = snapFilesystem.PathCombine(environment.Io.ThisExeWorkingDirectory, SnapConstants.SnapAppDllFilename);
+ var snapAppDllAbsolutePath = snapFilesystem.PathCombine(environment.Io.ThisExeWorkingDirectory, SnapConstants.SnapAppYamlFilename);
diskLogger.Debug($"{nameof(snapAppDllAbsolutePath)}: {snapAppDllAbsolutePath}.");
if (!snapFilesystem.FileExists(snapAppDllAbsolutePath))
@@ -110,7 +110,7 @@ async Task InstallInBackgroundAsync(IMainWindowViewModel mainWindowViewModel)
}
catch (Exception ex)
{
- mainWindowLogger.ErrorException($"Error reading {SnapConstants.SnapAppDllFilename}", ex);
+ mainWindowLogger.ErrorException($"Error reading {SnapConstants.SnapAppYamlFilename}", ex);
goto done;
}
diff --git a/src/Snap.Shared.Tests/Snap.Shared.Tests.csproj b/src/Snap.Shared.Tests/Snap.Shared.Tests.csproj
index 8e09f053..5ee7a60a 100644
--- a/src/Snap.Shared.Tests/Snap.Shared.Tests.csproj
+++ b/src/Snap.Shared.Tests/Snap.Shared.Tests.csproj
@@ -14,6 +14,7 @@
+
diff --git a/src/Snap.Tests/Core/Extensions/SnapExtensionTests.cs b/src/Snap.Tests/Core/Extensions/SnapExtensionTests.cs
index 0ccbc1d7..dfa9770a 100644
--- a/src/Snap.Tests/Core/Extensions/SnapExtensionTests.cs
+++ b/src/Snap.Tests/Core/Extensions/SnapExtensionTests.cs
@@ -606,9 +606,9 @@ public async Task TestGetSnapAppFromDirectory()
var snapApp = _baseFixture.BuildSnapApp();
await using var tmpDir = _baseFixture.WithDisposableTempDirectory(_fileSystem);
- using var assemblyDefinition = _appWriter.BuildSnapAppAssembly(snapApp);
- var snapAppDllAbsolutePath = _fileSystem.PathCombine(tmpDir.WorkingDirectory, assemblyDefinition.BuildRelativeFilename());
- assemblyDefinition.Write(snapAppDllAbsolutePath);
+ using var snapAppYamlStream = _appWriter.BuildSnapApp(snapApp);
+ var snapAppDllAbsolutePath = _fileSystem.PathCombine(tmpDir.WorkingDirectory, SnapConstants.SnapAppYamlFilename);
+ _fileSystem.FileWrite(snapAppYamlStream, snapAppDllAbsolutePath);
var appSpecAfter = tmpDir.WorkingDirectory.GetSnapAppFromDirectory(_fileSystem, _appReader);
Assert.NotNull(appSpecAfter);
@@ -622,9 +622,9 @@ public async Task TestGetSnapAppFromDirectory_Supports_Yaml_Member_Aliases()
snapApp.InstallDirectoryName = "mydirectory";
await using var tmpDir = _baseFixture.WithDisposableTempDirectory(_fileSystem);
- using var assemblyDefinition = _appWriter.BuildSnapAppAssembly(snapApp);
- var snapAppDllAbsolutePath = _fileSystem.PathCombine(tmpDir.WorkingDirectory, assemblyDefinition.BuildRelativeFilename());
- assemblyDefinition.Write(snapAppDllAbsolutePath);
+ using var snapAppYamlStream = _appWriter.BuildSnapApp(snapApp);
+ var snapAppDllAbsolutePath = _fileSystem.PathCombine(tmpDir.WorkingDirectory, SnapConstants.SnapAppYamlFilename);
+ _fileSystem.FileWrite(snapAppYamlStream, snapAppDllAbsolutePath);
var appSpecAfter = tmpDir.WorkingDirectory.GetSnapAppFromDirectory(_fileSystem, _appReader);
Assert.NotNull(appSpecAfter);
@@ -1035,4 +1035,4 @@ static Dictionary BuildExpansionProperties(string value)
return properties;
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap.Tests/Core/SnapAppWriterTests.cs b/src/Snap.Tests/Core/SnapAppWriterTests.cs
index 623c4154..0c79e3bf 100644
--- a/src/Snap.Tests/Core/SnapAppWriterTests.cs
+++ b/src/Snap.Tests/Core/SnapAppWriterTests.cs
@@ -40,7 +40,7 @@ public void TestBuildSnapAppAssembly_Throws_If_Channel_UpdateFeed_Source_Is_Null
snapAppBefore.Channels.ForEach(x => { x.UpdateFeed.Source = null; });
Assert.True(snapAppBefore.Channels.Count > 0);
- var ex = Assert.Throws(() => _snapAppWriter.BuildSnapAppAssembly(snapAppBefore));
+ var ex = Assert.Throws(() => _snapAppWriter.BuildSnapApp(snapAppBefore));
Assert.StartsWith("Update feed Source cannot be null", ex.Message);
}
@@ -49,8 +49,8 @@ public void TestBuildSnapAppAssembly()
{
var snapAppBefore = _baseFixture.BuildSnapApp();
- using var assembly = _snapAppWriter.BuildSnapAppAssembly(snapAppBefore);
- var snapAppAfter = assembly.GetSnapApp(_snapAppReader);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapAppBefore);
+ var snapAppAfter = _snapAppReader.BuildSnapAppFromStream(snapAppYamlStream);
Assert.NotNull(snapAppAfter);
}
@@ -75,8 +75,8 @@ public void TestBuildSnapAppAssembly_Prunes_PushFeed_Credentials()
}
});
- using var assembly = _snapAppWriter.BuildSnapAppAssembly(snapAppBefore);
- var snapAppAfter = assembly.GetSnapApp(_snapAppReader);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapAppBefore);
+ var snapAppAfter = _snapAppReader.BuildSnapAppFromStream(snapAppYamlStream);
Assert.NotNull(snapAppAfter);
var snapAppAfterChannel = snapAppAfter.GetDefaultChannelOrThrow();
@@ -112,8 +112,8 @@ public void TestBuildSnapAppAssembly_Prunes_UpdateFeed_Credentials_If_Nuget_Org_
},
});
- using var assembly = _snapAppWriter.BuildSnapAppAssembly(snapAppBefore);
- var snapAppAfter = assembly.GetSnapApp(_snapAppReader);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapAppBefore);
+ var snapAppAfter = _snapAppReader.BuildSnapAppFromStream(snapAppYamlStream);
Assert.NotNull(snapAppAfter);
var snapAppAfterChannel = snapAppAfter.GetDefaultChannelOrThrow();
@@ -163,8 +163,8 @@ public void TestBuildSnapAppAssembly_Prunes_UpdateFeed_ApiKey_But_Allows_Usernam
UpdateFeed = updateFeed
});
- using var assembly = _snapAppWriter.BuildSnapAppAssembly(snapAppBefore);
- var snapAppAfter = assembly.GetSnapApp(_snapAppReader);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapAppBefore);
+ var snapAppAfter = _snapAppReader.BuildSnapAppFromStream(snapAppYamlStream);
Assert.NotNull(snapAppAfter);
var snapAppAfterChannel = snapAppAfter.GetDefaultChannelOrThrow();
@@ -201,8 +201,8 @@ public void TestBuildSnapAppAssembly_Include_Persistent_Assets()
"somefile.json"
];
- using var assembly = _snapAppWriter.BuildSnapAppAssembly(snapAppBefore);
- var snapAppAfter = assembly.GetSnapApp(_snapAppReader);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapAppBefore);
+ var snapAppAfter = _snapAppReader.BuildSnapAppFromStream(snapAppYamlStream);
Assert.NotNull(snapAppAfter);
Assert.Equal(snapAppBefore.Target.PersistentAssets, snapAppAfter.Target.PersistentAssets);
@@ -219,10 +219,10 @@ public void TestBuildSnapAppAssembly_Include_Shortcuts()
SnapShortcutLocation.StartMenu
];
- using var assembly = _snapAppWriter.BuildSnapAppAssembly(snapAppBefore);
- var snapAppAfter = assembly.GetSnapApp(_snapAppReader);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapAppBefore);
+ var snapAppAfter = _snapAppReader.BuildSnapAppFromStream(snapAppYamlStream);
Assert.NotNull(snapAppAfter);
Assert.Equal(snapAppBefore.Target.PersistentAssets, snapAppAfter.Target.PersistentAssets);
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap.Tests/Core/SnapPackTests.cs b/src/Snap.Tests/Core/SnapPackTests.cs
index 49c97f1a..82303c00 100644
--- a/src/Snap.Tests/Core/SnapPackTests.cs
+++ b/src/Snap.Tests/Core/SnapPackTests.cs
@@ -70,7 +70,7 @@ public void TestAlwaysRemoveTheseAssemblies()
var assemblies = new List
{
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, SnapConstants.SnapDllFilename),
- _snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, SnapConstants.SnapAppDllFilename)
+ _snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, SnapConstants.SnapAppYamlFilename)
}.Select(x => x.ForwardSlashesSafe()).ToList();
Assert.Equal(assemblies, _snapPack.AlwaysRemoveTheseAssemblies);
@@ -81,7 +81,7 @@ public void TestNeverGenerateBsDiffsTheseAssemblies()
{
var assemblies = new List
{
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename)
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename)
}.Select(x => x.ForwardSlashesSafe()).ToList();
Assert.Equal(assemblies, _snapPack.NeverGenerateBsDiffsTheseAssemblies);
@@ -200,7 +200,7 @@ public async Task TestBuildPackageAsync_Genesis()
genesisSnapReleaseBuilder.AssertSnapReleaseIsGenesis(genesisPackageContext.FullPackageSnapRelease);
genesisSnapReleaseBuilder.AssertSnapReleaseFiles(genesisPackageContext.FullPackageSnapRelease,
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -292,7 +292,7 @@ public async Task TestBuildPackageAsync_Removes_Snap_Asset_Assemblies()
genesisSnapReleaseBuilder.AssertSnapReleaseIsGenesis(genesisPackageContext.FullPackageSnapRelease);
genesisSnapReleaseBuilder.AssertSnapReleaseFiles(genesisPackageContext.FullPackageSnapRelease,
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -334,7 +334,7 @@ public async Task TestBuildPackageAsync_Delta_Only_Contains_Default_Channel()
var genesisFiles = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -364,7 +364,7 @@ public async Task TestBuildPackageAsync_Delta_Only_Contains_Default_Channel()
update1SnapReleaseBuilder.AssertDeltaChangeset(update1PackageContext.DeltaPackageSnapRelease,
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe()
], unmodifiedNuspecTargetPaths:
[
@@ -412,7 +412,7 @@ public async Task TestBuildPackageAsync_Delta_First_File_Has_Data_Then_Second_Is
update1SnapReleaseBuilder.AssertDeltaChangeset(update1PackageContext.DeltaPackageSnapRelease,
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, "empty.dll").ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
@@ -466,7 +466,7 @@ public async Task TestBuildPackageAsync_Delta_First_File_Is_Empty_Second_Is_Empt
update1SnapReleaseBuilder.AssertDeltaChangeset(update1PackageContext.DeltaPackageSnapRelease,
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
[
@@ -516,7 +516,7 @@ public async Task TestBuildPackageAsync_Delta_First_File_Is_Empty_Second_Has_Dat
update1SnapReleaseBuilder.AssertDeltaChangeset(update1PackageContext.DeltaPackageSnapRelease,
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, "empty.dll").ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
@@ -581,7 +581,7 @@ public async Task TestBuildPackageAsync_Delta_First_File_Has_Data_Second_Is_Empt
update2SnapReleaseBuilder.AssertDeltaChangeset(update2PackageContext.DeltaPackageSnapRelease,
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, "empty.dll").ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
@@ -640,7 +640,7 @@ public async Task TestBuildPackageAsync_Delta_New_File_Is_Added()
var genesisFiles = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -669,7 +669,7 @@ public async Task TestBuildPackageAsync_Delta_New_File_Is_Added()
],
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
[
@@ -717,7 +717,7 @@ public async Task TestBuildPackageAsync_Delta_Existing_File_Main_Executable_Is_M
var genesisFiles = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibPalRelativePath()).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
@@ -743,7 +743,7 @@ public async Task TestBuildPackageAsync_Delta_Existing_File_Main_Executable_Is_M
update1SnapReleaseBuilder.AssertDeltaChangeset(update1PackageContext.DeltaPackageSnapRelease,
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe()
], unmodifiedNuspecTargetPaths:
[
@@ -790,7 +790,7 @@ public async Task TestBuildPackageAsync_Delta_Existing_File_Is_Modified()
var genesisFiles = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -815,7 +815,7 @@ public async Task TestBuildPackageAsync_Delta_Existing_File_Is_Modified()
update1SnapReleaseBuilder.AssertDeltaChangeset(update1PackageContext.DeltaPackageSnapRelease,
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, "test.dll").ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
@@ -863,7 +863,7 @@ public async Task TestBuildPackageAsync_Delta_Existing_File_Is_Deleted()
var genesisFiles = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -894,7 +894,7 @@ public async Task TestBuildPackageAsync_Delta_Existing_File_Is_Deleted()
],
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
[
@@ -954,7 +954,7 @@ public async Task TestBuildPackageAsync_Delta_New_File_Per_Release()
var genesisFiles = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -986,7 +986,7 @@ public async Task TestBuildPackageAsync_Delta_New_File_Per_Release()
],
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
[
@@ -1014,7 +1014,7 @@ public async Task TestBuildPackageAsync_Delta_New_File_Per_Release()
],
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
[
@@ -1081,7 +1081,7 @@ public async Task TestBuildPackageAsync_Delta_New_Modified_Deleted_New()
var update3Files = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -1110,7 +1110,7 @@ public async Task TestBuildPackageAsync_Delta_New_Modified_Deleted_New()
update3SnapReleaseBuilder.AssertDeltaChangeset(update3PackageContext.DeltaPackageSnapRelease,
[update3Files.Last()],
- modifiedNuspecTargetPaths: [_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ modifiedNuspecTargetPaths: [_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
[
@@ -1175,7 +1175,7 @@ public async Task TestRebuildPackageAsync()
var update3Files = new[]
{
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe(),
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.StubExeFileName).ForwardSlashesSafe(),
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, genesisSnapReleaseBuilder.GetLibBsdiffRelativePath()).ForwardSlashesSafe(),
@@ -1208,7 +1208,7 @@ public async Task TestRebuildPackageAsync()
],
modifiedNuspecTargetPaths:
[
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
],
unmodifiedNuspecTargetPaths:
[
diff --git a/src/Snap/Core/SnapAppReader.cs b/src/Snap/Core/SnapAppReader.cs
index 77ccdd2c..0322228f 100644
--- a/src/Snap/Core/SnapAppReader.cs
+++ b/src/Snap/Core/SnapAppReader.cs
@@ -18,9 +18,9 @@ namespace Snap.Core;
internal interface ISnapAppReader
{
SnapApps BuildSnapAppsFromYamlString(string yamlString);
- SnapApp BuildSnapAppFromStream(MemoryStream stream);
+ SnapApp BuildSnapAppFromStream(Stream stream);
SnapApp BuildSnapAppFromYamlString(string yamlString);
- ValueTask BuildSnapAppsReleasesFromStreamAsync(MemoryStream stream);
+ ValueTask BuildSnapAppsReleasesFromStreamAsync(Stream stream);
}
internal sealed class SnapAppReader : ISnapAppReader
@@ -61,16 +61,11 @@ static IDeserializer Build(DeserializerBuilder builder)
.Build();
}
- public SnapApps BuildSnapAppsFromStream([NotNull] MemoryStream stream)
+ public SnapApp BuildSnapAppFromStream([NotNull] Stream stream)
{
- if (stream == null) throw new ArgumentNullException(nameof(stream));
- return BuildSnapAppsFromYamlString(Encoding.UTF8.GetString(stream.ToArray()));
- }
-
- public SnapApp BuildSnapAppFromStream([NotNull] MemoryStream stream)
- {
- if (stream == null) throw new ArgumentNullException(nameof(stream));
- return BuildSnapAppFromYamlString(Encoding.UTF8.GetString(stream.ToArray()));
+ ArgumentNullException.ThrowIfNull(stream);
+ var textReader = new StreamReader(stream, Encoding.UTF8);
+ return BuildSnapAppFromYamlString(textReader.ReadToEnd());
}
public SnapApp BuildSnapAppFromYamlString(string yamlString)
@@ -79,7 +74,7 @@ public SnapApp BuildSnapAppFromYamlString(string yamlString)
return DeserializerSnapApp.Deserialize(yamlString);
}
- public ValueTask BuildSnapAppsReleasesFromStreamAsync([NotNull] MemoryStream stream)
+ public ValueTask BuildSnapAppsReleasesFromStreamAsync([NotNull] Stream stream)
{
if (stream == null) throw new ArgumentNullException(nameof(stream));
return MessagePackSerializer.DeserializeAsync(stream, MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4BlockArray));
@@ -90,4 +85,4 @@ public SnapApps BuildSnapAppsFromYamlString([NotNull] string yamlString)
if (string.IsNullOrWhiteSpace(yamlString)) throw new ArgumentException("Value cannot be null or whitespace.", nameof(yamlString));
return DeserializerSnapApps.Deserialize(yamlString);
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap/Core/SnapAppWriter.cs b/src/Snap/Core/SnapAppWriter.cs
index 9dbde36b..91c84228 100644
--- a/src/Snap/Core/SnapAppWriter.cs
+++ b/src/Snap/Core/SnapAppWriter.cs
@@ -1,23 +1,20 @@
using System;
+using System.IO;
using System.Text;
using JetBrains.Annotations;
using MessagePack;
-using Mono.Cecil;
-using Snap.Attributes;
using Snap.Core.Models;
using Snap.Core.Yaml.Emitters;
using Snap.Core.Yaml.TypeConverters;
-using Snap.Reflection;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.Converters;
using YamlDotNet.Serialization.NamingConventions;
-using EmbeddedResource = Mono.Cecil.EmbeddedResource;
namespace Snap.Core;
internal interface ISnapAppWriter
{
- AssemblyDefinition BuildSnapAppAssembly(SnapApp snapsApp);
+ MemoryStream BuildSnapApp(SnapApp snapsApp);
string ToSnapAppYamlString(SnapApp snapApp);
string ToSnapAppsYamlString(SnapApps snapApps);
byte[] ToSnapAppsReleases(SnapAppsReleases snapAppsApps);
@@ -49,7 +46,7 @@ static ISerializer Build(SerializerBuilder serializerBuilder)
.Build();
}
- public AssemblyDefinition BuildSnapAppAssembly([NotNull] SnapApp snapApp)
+ public MemoryStream BuildSnapApp([NotNull] SnapApp snapApp)
{
if (snapApp == null) throw new ArgumentNullException(nameof(snapApp));
@@ -102,22 +99,11 @@ public AssemblyDefinition BuildSnapAppAssembly([NotNull] SnapApp snapApp)
}
}
- var snapAppYamlStr = ToSnapAppYamlString(snapApp);
- var currentVersion = snapApp.Version;
-
- var assembly = AssemblyDefinition.CreateAssembly(
- new AssemblyNameDefinition(SnapConstants.SnapAppLibraryName, new Version(currentVersion.Major,
- currentVersion.Minor, currentVersion.Patch)), SnapConstants.SnapAppLibraryName, ModuleKind.Dll);
-
- var assemblyReflector = new CecilAssemblyReflector(assembly);
-
- var snapAppReleaseDetailsAttributeMethodDefinition = assemblyReflector.MainModule.ImportReference(
- typeof(SnapAppReleaseDetailsAttribute).GetConstructor(Type.EmptyTypes));
-
- assemblyReflector.AddCustomAttribute(new CustomAttribute(snapAppReleaseDetailsAttributeMethodDefinition));
- assemblyReflector.AddResource(new EmbeddedResource(SnapConstants.SnapAppLibraryName, ManifestResourceAttributes.Public, Encoding.UTF8.GetBytes(snapAppYamlStr)));
-
- return assembly;
+ var yaml = ToSnapAppYamlString(snapApp);
+ var memoryStream = new MemoryStream();
+ memoryStream.Write(Encoding.UTF8.GetBytes(yaml));
+ memoryStream.Seek(0, SeekOrigin.Begin);
+ return memoryStream;
}
public string ToSnapAppYamlString([NotNull] SnapApp snapApp)
diff --git a/src/Snap/Core/SnapConstants.cs b/src/Snap/Core/SnapConstants.cs
index 495579ea..315829d5 100644
--- a/src/Snap/Core/SnapConstants.cs
+++ b/src/Snap/Core/SnapConstants.cs
@@ -9,7 +9,7 @@ internal static class SnapConstants
{
public static readonly string SnapAppLibraryName = "Snap.App";
public static readonly string SnapDllFilename = "Snap.dll";
- public static string SnapAppDllFilename => $"{SnapAppLibraryName}.dll";
+ public static string SnapAppYamlFilename => $"{SnapAppLibraryName}.yaml";
public static string SetupNupkgFilename = "Setup.nupkg";
public const string Sha256EmptyFileChecksum = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
@@ -30,4 +30,4 @@ static string BuildSnapNuspecUniqueFolderName()
return assemblyGuid.ToString("N");
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap/Core/SnapCryptoProvider.cs b/src/Snap/Core/SnapCryptoProvider.cs
index a44bfcab..aa459726 100644
--- a/src/Snap/Core/SnapCryptoProvider.cs
+++ b/src/Snap/Core/SnapCryptoProvider.cs
@@ -6,7 +6,6 @@
using System.Security.Cryptography;
using System.Text;
using JetBrains.Annotations;
-using Mono.Cecil;
using NuGet.Packaging;
using NuGet.Packaging.Core;
using Snap.Core.Models;
@@ -19,7 +18,6 @@ internal interface ISnapCryptoProvider
string Sha256(byte[] content);
string Sha256(Stream content);
string Sha256(StringBuilder content, Encoding encoding);
- string Sha256(AssemblyDefinition assemblyDefinition);
string Sha256(SnapRelease snapRelease, IPackageCoreReader packageCoreReader, ISnapPack snapPack);
string Sha256(SnapRelease snapRelease, PackageBuilder packageBuilder);
}
@@ -62,15 +60,6 @@ public string Sha256([NotNull] StringBuilder content, [NotNull] Encoding encodin
return Sha256(encoding.GetBytes(content.ToString()));
}
- public string Sha256([NotNull] AssemblyDefinition assemblyDefinition)
- {
- if (assemblyDefinition == null) throw new ArgumentNullException(nameof(assemblyDefinition));
- using var outputStream = new MemoryStream();
- assemblyDefinition.Write(outputStream);
- outputStream.Seek(0, SeekOrigin.Begin);
- return Sha256(outputStream);
- }
-
public string Sha256(SnapRelease snapRelease, [NotNull] IPackageCoreReader packageCoreReader, [NotNull] ISnapPack snapPack)
{
if (snapRelease == null) throw new ArgumentNullException(nameof(snapRelease));
@@ -160,4 +149,4 @@ static IEnumerable GetChecksumFilesForSnapRelease(SnapRelea
var files = snapRelease.IsDelta ? snapRelease.New.Concat(snapRelease.Modified).ToList() : snapRelease.Files;
return files.OrderBy(x => x.NuspecTargetPath, new OrdinalIgnoreCaseComparer());
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap/Core/SnapFilesystem.cs b/src/Snap/Core/SnapFilesystem.cs
index 8dd7290b..3800ffee 100644
--- a/src/Snap/Core/SnapFilesystem.cs
+++ b/src/Snap/Core/SnapFilesystem.cs
@@ -7,7 +7,6 @@
using System.Threading;
using System.Threading.Tasks;
using JetBrains.Annotations;
-using Mono.Cecil;
using Snap.Core.IO;
using Snap.Extensions;
using Snap.Logging;
@@ -50,7 +49,6 @@ internal interface ISnapFilesystem
FileStream FileRead(string fileName, int bufferSize = 8196, bool useAsync = true);
FileStream FileReadWrite(string fileName, bool overwrite = true);
FileStream FileWrite(string fileName, bool overwrite = true);
- Task FileReadAssemblyDefinitionAsync(string filename, CancellationToken cancellationToken);
bool FileExists(string fileName);
void FileExistsThrowIfNotExists(string fileName);
FileInfo FileStat(string fileName);
@@ -152,19 +150,6 @@ public FileStream FileWrite([NotNull] string fileName, bool overwrite = true)
return fileStream;
}
- public async Task FileReadAssemblyDefinitionAsync([NotNull] string filename, CancellationToken cancellationToken)
- {
- if (filename == null) throw new ArgumentNullException(nameof(filename));
-
- if (!FileExists(filename))
- {
- throw new FileNotFoundException(filename);
- }
-
- var srcStream = await FileReadAsync(filename, cancellationToken);
- return AssemblyDefinition.ReadAssembly(srcStream);
- }
-
public bool FileExists([NotNull] string fileName)
{
if (fileName == null) throw new ArgumentNullException(nameof(fileName));
@@ -607,4 +592,4 @@ public string DirectoryGetParent([NotNull] string path)
return parentDirectory;
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap/Core/SnapInstaller.cs b/src/Snap/Core/SnapInstaller.cs
index 9cb5963d..9179a7e4 100644
--- a/src/Snap/Core/SnapInstaller.cs
+++ b/src/Snap/Core/SnapInstaller.cs
@@ -299,15 +299,15 @@ async Task ChmodAsync(string exePath)
}
}
- var snapAppDllAbsolutePath = _snapOs.Filesystem.PathCombine(appDirectory, SnapConstants.SnapAppDllFilename);
+ var snapAppDllAbsolutePath = _snapOs.Filesystem.PathCombine(appDirectory, SnapConstants.SnapAppYamlFilename);
try
{
logger?.Info($"Updating {snapAppDllAbsolutePath}. Current channel is: {snapChannel.Name}.");
- using var snapAppDllAssemblyDefinition = _snapAppWriter.BuildSnapAppAssembly(snapApp);
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapApp);
await using var snapAPpDllDestinationStream = _snapOs.Filesystem.FileWrite(snapAppDllAbsolutePath);
- snapAppDllAssemblyDefinition.Write(snapAPpDllDestinationStream);
+ await snapAppYamlStream.CopyToAsync(snapAPpDllDestinationStream, cancellationToken);
}
catch(Exception e)
{
diff --git a/src/Snap/Core/SnapPack.cs b/src/Snap/Core/SnapPack.cs
index b6009fae..23cdfc90 100644
--- a/src/Snap/Core/SnapPack.cs
+++ b/src/Snap/Core/SnapPack.cs
@@ -9,7 +9,6 @@
using System.Threading.Tasks;
using System.Xml.Linq;
using JetBrains.Annotations;
-using Mono.Cecil;
using NuGet.Frameworks;
using NuGet.Packaging;
using NuGet.Packaging.Core;
@@ -19,7 +18,6 @@
using Snap.Core.Models;
using Snap.Extensions;
using Snap.NuGet;
-using Snap.Reflection;
namespace Snap.Core;
@@ -117,12 +115,12 @@ internal sealed class SnapPack : ISnapPack
public IReadOnlyCollection AlwaysRemoveTheseAssemblies => new List
{
_snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, SnapConstants.SnapDllFilename).ForwardSlashesSafe(),
- _snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecRootTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
};
public IReadOnlyCollection NeverGenerateBsDiffsTheseAssemblies => new List
{
- _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename).ForwardSlashesSafe()
+ _snapFilesystem.PathCombine(SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename).ForwardSlashesSafe()
};
public SnapPack(ISnapFilesystem snapFilesystem,
@@ -366,33 +364,6 @@ await BuildFullPackageAsyncInternal(packageDetails, snapAppChannelReleases, snap
}
fullSnapRelease.Files.Remove(removeThisAssembly);
-
- if (!targetPath.EndsWith(SnapConstants.SnapDllFilename)) return;
-
- using var snapAssemblyDefinition = AssemblyDefinition.ReadAssembly(packageFile.GetStream());
- var cecil = new CecilAssemblyReflector(snapAssemblyDefinition);
- var snapAssemblyInformationalVersionAttribute = cecil
- .GetAttribute();
-
- if (snapAssemblyInformationalVersionAttribute == null)
- {
- throw new Exception($"Failed to get assembly version from {targetPath}.");
- }
-
- var snapAssemblyInformationVersionValue = snapAssemblyInformationalVersionAttribute.Values.First().Value;
-
- if (!SemanticVersion.TryParse(snapAssemblyInformationVersionValue, out var snapAssemblyVersion))
- {
- throw new Exception($"Failed to parse assembly version: {snapAssemblyInformationVersionValue}. Target path: {targetPath}");
- }
-
- if (snapAssemblyVersion != _snapDllVersion)
- {
- throw new Exception(
- $"Invalid {SnapConstants.SnapDllFilename} version. " +
- $"Expected: {Snapx.Version} but was {snapAssemblyInformationVersionValue}. " +
- "You must either upgrade snapx dotnet cli tool or the Snapx.Core nuget package in your csproj.");
- }
});
await AddSnapAssetsAsync(snapPackageDetails, packageBuilder, fullSnapApp, fullSnapRelease, cancellationToken);
@@ -837,7 +808,7 @@ async Task ApplyDeltaPackageAsync(SnapRelease deltaRelease, bool skipChecksum =
var snapApp = await GetSnapAppAsync(packageArchiveReader, cancellationToken);
if (snapApp == null)
{
- throw new FileNotFoundException(SnapConstants.SnapAppDllFilename);
+ throw new FileNotFoundException(SnapConstants.SnapAppYamlFilename);
}
var packageBuilder = new PackageBuilder();
@@ -909,12 +880,12 @@ async Task AddSnapAssetsAsync([NotNull] ISnapPackageDetails snapNuspecDetails, [
var (stubExeFileStream, stubExeFileName) = snapApp.GetStubExeStream(_snapFilesystem, AppContext.BaseDirectory);
AddPackageFile(packageBuilder, stubExeFileStream, SnapConstants.NuspecAssetsTargetPath, stubExeFileName, snapRelease);
- // Snap.App.dll
- using var snapAppDllAssembly = _snapAppWriter.BuildSnapAppAssembly(snapApp);
+ // Snap.App.yaml
+ using var snapAppYamlStream = _snapAppWriter.BuildSnapApp(snapApp);
var snapAppMemoryStream = new MemoryStream();
- snapAppDllAssembly.Write(snapAppMemoryStream);
+ await snapAppYamlStream.CopyToAsync(snapAppMemoryStream, cancellationToken);
- AddPackageFile(packageBuilder, snapAppMemoryStream, SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppDllFilename, snapRelease);
+ AddPackageFile(packageBuilder, snapAppMemoryStream, SnapConstants.NuspecAssetsTargetPath, SnapConstants.SnapAppYamlFilename, snapRelease);
}
(MemoryStream nuspecStream, List<(string filename, string targetPath)> packageFiles) BuildNuspec([NotNull] MemoryStream nuspecStream, SnapApp snapApp, [NotNull] Func propertyProvider, [NotNull] string baseDirectory)
@@ -1149,10 +1120,9 @@ public MemoryStream BuildReleasesPackage(SnapApp snapApp, SnapAppsReleases snapA
public async Task GetSnapAppAsync(IAsyncPackageCoreReader asyncPackageCoreReader, CancellationToken cancellationToken = default)
{
- if (asyncPackageCoreReader == null) throw new ArgumentNullException(nameof(asyncPackageCoreReader));
- await using var assemblyStream = await GetSnapAssetAsync(asyncPackageCoreReader, SnapConstants.SnapAppDllFilename, cancellationToken);
- using var assemblyDefinition = AssemblyDefinition.ReadAssembly(assemblyStream, new ReaderParameters(ReadingMode.Immediate));
- var snapApp = assemblyDefinition.GetSnapApp(_snapAppReader);
+ ArgumentNullException.ThrowIfNull(asyncPackageCoreReader);
+ await using var assemblyStream = await GetSnapAssetAsync(asyncPackageCoreReader, SnapConstants.SnapAppYamlFilename, cancellationToken);
+ var snapApp = _snapAppReader.BuildSnapAppFromStream(assemblyStream);
return snapApp;
}
@@ -1323,4 +1293,4 @@ string NuspecPropertyProvider(string propertyName)
return (nuspecProperties, NuspecPropertyProvider);
}
-}
\ No newline at end of file
+}
diff --git a/src/Snap/Extensions/CecilExtensions.cs b/src/Snap/Extensions/CecilExtensions.cs
deleted file mode 100644
index 16680e43..00000000
--- a/src/Snap/Extensions/CecilExtensions.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using System;
-using System.IO;
-using System.Linq;
-using System.Linq.Expressions;
-using JetBrains.Annotations;
-using Mono.Cecil;
-
-namespace Snap.Extensions;
-
-internal static class CecilExtensions
-{
- const string ExpressionCannotBeNullMessage = "The expression cannot be null";
- const string InvalidExpressionMessage = "Invalid expression";
-
- public static byte[] ToByteArray([NotNull] this AssemblyDefinition assemblyDefinition, WriterParameters writerParameters = null)
- {
- if (assemblyDefinition == null) throw new ArgumentNullException(nameof(assemblyDefinition));
- using var srcStream = new MemoryStream();
- assemblyDefinition.Write(srcStream, writerParameters ?? new WriterParameters());
- return srcStream.ToArray();
- }
-
- public static string BuildMemberName(this Expression> expression)
- {
- return BuildMemberName(expression.Body);
- }
-
- public static string BuildPropertyGetterSyntax(this Expression> expression)
- {
- var propertyName = expression.BuildMemberName();
- return $"get_{propertyName}";
- }
-
- public static string BuildPropertySetterSyntax(this Expression> expression)
- {
- var propertyName = expression.BuildMemberName();
- return $"set_{propertyName}";
- }
-
- public static TypeDefinition ResolveTypeDefinition([NotNull] this AssemblyDefinition assemblyDefinition)
- {
- return ResolveTypeDefinitionImpl(assemblyDefinition);
- }
-
- public static (TypeDefinition typeDefinition, PropertyDefinition propertyDefinition, string getterName, string setterName) ResolveAutoProperty([NotNull] this AssemblyDefinition assemblyDefinition, [NotNull] Expression> selector)
- {
- if (assemblyDefinition == null) throw new ArgumentNullException(nameof(assemblyDefinition));
- if (selector == null) throw new ArgumentNullException(nameof(selector));
-
- var getter = selector.BuildPropertyGetterSyntax();
- var setter = selector.BuildPropertySetterSyntax();
-
- var typeDefinition = assemblyDefinition.ResolveTypeDefinition();
- var propertyDefinition = typeDefinition?.Properties.SingleOrDefault(m =>
- m.GetMethod?.Name == getter || m.SetMethod?.Name == setter);
-
- return (typeDefinition, propertyDefinition, getter, setter);
- }
-
- static string BuildMemberName(Expression expression)
- {
- return expression switch
- {
- null => throw new ArgumentException(ExpressionCannotBeNullMessage),
- MemberExpression memberExpression =>
- // Reference type property or field
- memberExpression.Member.Name,
- MethodCallExpression methodCallExpression =>
- // Reference type method
- methodCallExpression.Method.Name,
- UnaryExpression unaryExpression =>
- // Property, field of method returning value type
- BuildMemberName(unaryExpression),
- _ => throw new ArgumentException(InvalidExpressionMessage)
- };
- }
-
- static string BuildMemberName(UnaryExpression unaryExpression)
- {
- if (unaryExpression.Operand is MethodCallExpression methodExpression)
- {
- return methodExpression.Method.Name;
- }
-
- return ((MemberExpression)unaryExpression.Operand).Member.Name;
- }
-
- static TypeDefinition ResolveTypeDefinitionImpl([NotNull] AssemblyDefinition assemblyDefinition)
- {
- var tSourceFullName = typeof(T).FullName;
- var tSource = assemblyDefinition.MainModule.Types.SingleOrDefault(x => x.FullName == tSourceFullName);
- return tSource;
- }
-}
\ No newline at end of file
diff --git a/src/Snap/Extensions/SnapExtensions.cs b/src/Snap/Extensions/SnapExtensions.cs
index 1a927d7e..930948a7 100644
--- a/src/Snap/Extensions/SnapExtensions.cs
+++ b/src/Snap/Extensions/SnapExtensions.cs
@@ -6,14 +6,11 @@
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;
using JetBrains.Annotations;
-using Mono.Cecil;
using NuGet.Configuration;
using NuGet.Packaging.Core;
-using Snap.Attributes;
using Snap.Core;
using Snap.Core.Models;
using Snap.NuGet;
-using Snap.Reflection;
namespace Snap.Extensions;
@@ -801,48 +798,20 @@ internal static List BuildSnapFeeds([NotNull] this INuGetPackageS
return snapFeeds;
}
- internal static SnapApp GetSnapApp([NotNull] this AssemblyDefinition assemblyDefinition, [NotNull] ISnapAppReader snapAppReader)
- {
- if (assemblyDefinition == null) throw new ArgumentNullException(nameof(assemblyDefinition));
- if (snapAppReader == null) throw new ArgumentNullException(nameof(snapAppReader));
-
- var assemblyReflector = new CecilAssemblyReflector(assemblyDefinition);
-
- var snapReleaseDetailsAttribute = assemblyReflector.GetAttribute();
- if (snapReleaseDetailsAttribute == null)
- {
- throw new Exception($"Unable to find {nameof(SnapAppReleaseDetailsAttribute)} in assembly {assemblyReflector.FullName}");
- }
-
- var snapSpecResource = assemblyReflector.MainModule.Resources.SingleOrDefault(x => x.Name == SnapConstants.SnapAppLibraryName);
- if (!(snapSpecResource is EmbeddedResource snapSpecEmbeddedResource))
- {
- throw new Exception($"Unable to find resource {SnapConstants.SnapAppLibraryName} in assembly {assemblyReflector.FullName}");
- }
-
- using var resourceStream = snapSpecEmbeddedResource.GetResourceStream();
- using var snapAppMemoryStream = new MemoryStream();
- resourceStream.CopyTo(snapAppMemoryStream);
- snapAppMemoryStream.Seek(0, SeekOrigin.Begin);
-
- return snapAppReader.BuildSnapAppFromStream(snapAppMemoryStream);
- }
-
internal static SnapApp GetSnapAppFromDirectory([NotNull] this string workingDirectory, [NotNull] ISnapFilesystem filesystem, [NotNull] ISnapAppReader snapAppReader)
{
- if (workingDirectory == null) throw new ArgumentNullException(nameof(workingDirectory));
- if (filesystem == null) throw new ArgumentNullException(nameof(filesystem));
- if (snapAppReader == null) throw new ArgumentNullException(nameof(snapAppReader));
+ ArgumentNullException.ThrowIfNull(workingDirectory);
+ ArgumentNullException.ThrowIfNull(filesystem);
+ ArgumentNullException.ThrowIfNull(snapAppReader);
- var snapAppDll = filesystem.PathCombine(workingDirectory, SnapConstants.SnapAppDllFilename);
+ var snapAppDll = filesystem.PathCombine(workingDirectory, SnapConstants.SnapAppYamlFilename);
if (!filesystem.FileExists(snapAppDll))
{
throw new FileNotFoundException(snapAppDll);
}
-
- using var snapAppDllFileStream = new FileStream(snapAppDll, FileMode.Open, FileAccess.Read, FileShare.Read);
- using var snapAppDllAssemblyDefinition = AssemblyDefinition.ReadAssembly(snapAppDllFileStream);
- return snapAppDllAssemblyDefinition.GetSnapApp(snapAppReader);
+
+ var yaml = filesystem.FileReadAllText(snapAppDll);
+ return snapAppReader.BuildSnapAppFromYamlString(yaml);
}
internal static void GetStubExeFullPath([NotNull] this SnapApp snapApp, [NotNull] ISnapFilesystem snapFilesystem, [NotNull] string baseDirectory, out string stubExeFullPath)
diff --git a/src/Snap/Reflection/CecilAssemblyReflector.cs b/src/Snap/Reflection/CecilAssemblyReflector.cs
deleted file mode 100644
index 0893ef12..00000000
--- a/src/Snap/Reflection/CecilAssemblyReflector.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using JetBrains.Annotations;
-using Mono.Cecil;
-using Snap.Extensions;
-using Snap.Reflection.Exceptions;
-
-namespace Snap.Reflection;
-
-internal interface IAssemblyReflector
-{
- string Location { get; }
- string FileName { get; }
- string FullName { get; }
- ModuleDefinition MainModule {get;}
- IEnumerable GetAttributes() where T : Attribute;
- IAttributeReflector GetAttribute() where T : Attribute;
- IEnumerable GetTypes();
- CecilResourceReflector GetResourceReflector();
- void AddResource(EmbeddedResource embeddedResource);
- void AddCustomAttribute(CustomAttribute attribute);
- void RewriteOrThrow(Expression> selector, Action rewriter);
-}
-
-internal class CecilAssemblyReflector([NotNull] AssemblyDefinition assemblyDefinition) : IAssemblyReflector
-{
- readonly AssemblyDefinition _assemblyDefinition = assemblyDefinition ?? throw new ArgumentNullException(nameof(assemblyDefinition));
-
- public string Location => _assemblyDefinition.MainModule.FileName;
- public string FileName => _assemblyDefinition.MainModule.Name;
- public string FullName => _assemblyDefinition.FullName;
- public ModuleDefinition MainModule => _assemblyDefinition.MainModule;
-
- public IEnumerable GetAttributes() where T : Attribute
- {
- if (!_assemblyDefinition.HasCustomAttributes)
- {
- return Array.Empty();
- }
-
- var expectedTypeName = typeof(T).Name;
- return _assemblyDefinition.CustomAttributes
- .Where(a => a.AttributeType.Name == expectedTypeName)
- .Select(a => new CecilAttributeReflector(a))
- .ToList();
- }
-
- public IAttributeReflector GetAttribute() where T : Attribute
- {
- return GetAttributes().SingleOrDefault();
- }
-
- public IEnumerable GetTypes()
- {
- var result = new List();
- var modules = _assemblyDefinition.Modules;
- foreach (var module in modules)
- {
- var types = module.GetTypes();
- result.AddRange(types.Select(type => new CecilTypeReflector(type)));
- }
- return result;
- }
-
- public CecilResourceReflector GetResourceReflector()
- {
- return new(_assemblyDefinition);
- }
-
- public void AddCustomAttribute([NotNull] CustomAttribute attribute)
- {
- if (attribute == null) throw new ArgumentNullException(nameof(attribute));
- _assemblyDefinition.CustomAttributes.Add(attribute);
- }
-
- public void AddResource([NotNull] EmbeddedResource embeddedResource)
- {
- if (embeddedResource == null) throw new ArgumentNullException(nameof(embeddedResource));
- _assemblyDefinition.MainModule.Resources.Add(embeddedResource);
- }
-
- public void RewriteOrThrow([NotNull] Expression> selector,
- [NotNull] Action rewriter)
- {
- if (selector == null) throw new ArgumentNullException(nameof(selector));
- if (rewriter == null) throw new ArgumentNullException(nameof(rewriter));
-
- var (typeDefinition, autoPropertyDefinition, setterName, getterName) = _assemblyDefinition.ResolveAutoProperty(selector);
- if (autoPropertyDefinition == null)
- {
- throw new CecilAutoPropertyNotFoundException(_assemblyDefinition, selector.BuildMemberName());
- }
-
- rewriter(typeDefinition, getterName, setterName, autoPropertyDefinition);
- }
-}
\ No newline at end of file
diff --git a/src/Snap/Reflection/CecilAttributeReflector.cs b/src/Snap/Reflection/CecilAttributeReflector.cs
deleted file mode 100644
index 99314b78..00000000
--- a/src/Snap/Reflection/CecilAttributeReflector.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using JetBrains.Annotations;
-using Mono.Cecil;
-
-namespace Snap.Reflection;
-
-internal interface IAttributeReflector
-{
- IDictionary Values { get; }
-}
-
-internal class CecilAttributeReflector([NotNull] CustomAttribute attribute) : IAttributeReflector
-{
- readonly CustomAttribute _attribute = attribute ?? throw new ArgumentNullException(nameof(attribute));
- IDictionary _values;
-
- public IDictionary Values
- {
- get
- {
- if (_values != null)
- {
- return _values;
- }
-
- _values = new Dictionary();
- var constructorArguments = _attribute.Constructor.Resolve().Parameters.Select(p => p.Name).ToList();
- var constructorParameters = _attribute.ConstructorArguments.Select(a => a.Value.ToString()).ToList();
- for (var i = 0; i < constructorArguments.Count; i++)
- {
- _values.Add(constructorArguments[i], constructorParameters[i]);
- }
-
- foreach (var prop in _attribute.Properties)
- {
- _values.Add(prop.Name, prop.Argument.Value.ToString());
- }
-
- return _values;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Snap/Reflection/CecilResourceReflector.cs b/src/Snap/Reflection/CecilResourceReflector.cs
deleted file mode 100644
index 3b13bc21..00000000
--- a/src/Snap/Reflection/CecilResourceReflector.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using JetBrains.Annotations;
-using Mono.Cecil;
-using Snap.Reflection.Exceptions;
-
-namespace Snap.Reflection;
-
-internal interface IResourceReflector
-{
- IEnumerable GetResources();
- void RemoveOrThrow([NotNull] string name);
- void RemoveAllOrThrow(string @namespace);
-}
-
-internal class CecilResourceReflector([NotNull] AssemblyDefinition assemblyDefinition) : IResourceReflector
-{
- readonly AssemblyDefinition _assemblyDefinition = assemblyDefinition ?? throw new ArgumentNullException(nameof(assemblyDefinition));
-
- public IEnumerable GetResources()
- {
- return _assemblyDefinition.MainModule.Resources;
- }
-
- public void RemoveOrThrow(string name)
- {
- if (name == null) throw new ArgumentNullException(nameof(name));
- var resource = GetResources().SingleOrDefault(x => x.Name == name);
- if (resource == null)
- {
- throw new CecilResourceNotFoundException(_assemblyDefinition, name);
- }
-
- _assemblyDefinition.MainModule.Resources.Remove(resource);
- }
-
- public void RemoveAllOrThrow(string @namespace)
- {
- var resourcesRemoved = 0;
- foreach (var resource in GetResources().Where(x => @namespace == null || x.Name.StartsWith(@namespace)).ToList())
- {
- RemoveOrThrow(resource.Name);
- resourcesRemoved++;
- }
-
- if (resourcesRemoved <= 0)
- {
- throw new Exception($"Failed to remove any resources from assembly: {_assemblyDefinition.FullName}");
- }
- }
-}
\ No newline at end of file
diff --git a/src/Snap/Reflection/CecilTypeReflector.cs b/src/Snap/Reflection/CecilTypeReflector.cs
deleted file mode 100644
index 8d458423..00000000
--- a/src/Snap/Reflection/CecilTypeReflector.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using JetBrains.Annotations;
-using Mono.Cecil;
-
-namespace Snap.Reflection;
-
-internal interface ITypeReflector
-{
- IEnumerable GetAttributes() where T : Attribute;
- string FullName { get; }
- string Name { get; }
-}
-
-internal class CecilTypeReflector([NotNull] TypeDefinition type) : ITypeReflector
-{
- readonly TypeDefinition _type = type ?? throw new ArgumentNullException(nameof(type));
-
- public string FullName => _type.FullName;
- public string Name => _type.Name;
-
- public IEnumerable GetAttributes() where T : Attribute
- {
- if (!_type.HasCustomAttributes)
- {
- return Array.Empty();
- }
-
- var expectedTypeName = typeof(T).Name;
- return _type.CustomAttributes
- .Where(a => a.AttributeType.Name == expectedTypeName)
- .Select(a => new CecilAttributeReflector(a))
- .ToList();
- }
-
-}
\ No newline at end of file
diff --git a/src/Snap/Reflection/Exceptions/CecilAutoPropertyNotFoundException.cs b/src/Snap/Reflection/Exceptions/CecilAutoPropertyNotFoundException.cs
deleted file mode 100644
index 203b812b..00000000
--- a/src/Snap/Reflection/Exceptions/CecilAutoPropertyNotFoundException.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using JetBrains.Annotations;
-using Mono.Cecil;
-
-namespace Snap.Reflection.Exceptions;
-
-internal class CecilAutoPropertyNotFoundException([NotNull] AssemblyDefinition assemblyDefinition, string propertyName)
- : CecilReflectorException(assemblyDefinition, $"Unable to find auto property: {propertyName}");
\ No newline at end of file
diff --git a/src/Snap/Reflection/Exceptions/CecilReflectorException.cs b/src/Snap/Reflection/Exceptions/CecilReflectorException.cs
deleted file mode 100644
index bc123d3e..00000000
--- a/src/Snap/Reflection/Exceptions/CecilReflectorException.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System;
-using JetBrains.Annotations;
-using Mono.Cecil;
-
-namespace Snap.Reflection.Exceptions;
-
-internal abstract class CecilReflectorException : Exception
-{
- public AssemblyDefinition AssemblyDefinition { [UsedImplicitly] get; }
-
- protected CecilReflectorException([NotNull] AssemblyDefinition assemblyDefinition, [NotNull] string message) : base($"{message}. Assembly: {assemblyDefinition.FullName}.")
- {
- if (message == null) throw new ArgumentNullException(nameof(message));
- AssemblyDefinition = assemblyDefinition ?? throw new ArgumentNullException(nameof(assemblyDefinition));
- }
-}
\ No newline at end of file
diff --git a/src/Snap/Reflection/Exceptions/CecilResourceNotFoundException.cs b/src/Snap/Reflection/Exceptions/CecilResourceNotFoundException.cs
deleted file mode 100644
index e7308595..00000000
--- a/src/Snap/Reflection/Exceptions/CecilResourceNotFoundException.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Mono.Cecil;
-
-namespace Snap.Reflection.Exceptions;
-
-internal class CecilResourceNotFoundException(AssemblyDefinition assemblyDefinition, string resourceName)
- : CecilReflectorException(assemblyDefinition,
- $"Unable to find resource with name: {resourceName}. Assembly: {assemblyDefinition.FullName}");
\ No newline at end of file
diff --git a/src/Snap/Snap.Deps.targets b/src/Snap/Snap.Deps.targets
index e62bf510..545c82c4 100644
--- a/src/Snap/Snap.Deps.targets
+++ b/src/Snap/Snap.Deps.targets
@@ -1,7 +1,6 @@
-
diff --git a/src/Snapx/Program.cs b/src/Snapx/Program.cs
index 299d26a9..f43c56d4 100644
--- a/src/Snapx/Program.cs
+++ b/src/Snapx/Program.cs
@@ -771,16 +771,16 @@ async Task BuildOfflineInstallerAsync(Stream installerZipStream, Stream warpPack
{
if (fullNupkgAbsolutePath == null) throw new ArgumentNullException(nameof(fullNupkgAbsolutePath));
- var repackageDirSnapAppDllAbsolutePath = snapOs.Filesystem.PathCombine(repackageTempDir, SnapConstants.SnapAppDllFilename);
+ var repackageDirSnapAppDllAbsolutePath = snapOs.Filesystem.PathCombine(repackageTempDir, SnapConstants.SnapAppYamlFilename);
var repackageDirFullNupkgAbsolutePath = snapOs.Filesystem.PathCombine(repackageTempDir, "Setup.nupkg");
var repackageDirReleasesNupkgAbsolutePath = snapOs.Filesystem.PathCombine(repackageTempDir,
snapOs.Filesystem.PathGetFileName(releasesNupkgAbsolutePath));
- using var snapAppAssemblyDefinition = snapAppWriter.BuildSnapAppAssembly(snapApp);
+ using var snapAppYamlStream = snapAppWriter.BuildSnapApp(snapApp);
await using var snapAppDllDstMemoryStream = snapOs.Filesystem.FileWrite(repackageDirSnapAppDllAbsolutePath);
await using var warpPackerDstStream = snapOs.Filesystem.FileWrite(rootTempDirWarpPackerAbsolutePath);
using var installerZipArchive = new ZipArchive(installerZipStream, ZipArchiveMode.Read);
- snapAppAssemblyDefinition.Write(snapAppDllDstMemoryStream);
+ await snapAppYamlStream.CopyToAsync(snapAppDllDstMemoryStream, cancellationToken);
progressSource.Raise(10);
@@ -817,13 +817,13 @@ await Task.WhenAll(
async Task BuildWebInstallerAsync(Stream installerZipStream, FileStream warpPackerStream)
{
- var repackageDirSnapAppDllAbsolutePath = snapOs.Filesystem.PathCombine(repackageTempDir, SnapConstants.SnapAppDllFilename);
+ var repackageDirSnapAppDllAbsolutePath = snapOs.Filesystem.PathCombine(repackageTempDir, SnapConstants.SnapAppYamlFilename);
await using var warpPackerDstStream = snapOs.Filesystem.FileWrite(rootTempDirWarpPackerAbsolutePath);
using var zipArchive = new ZipArchive(installerZipStream, ZipArchiveMode.Read);
- using var snapAppAssemblyDefinition = snapAppWriter.BuildSnapAppAssembly(snapApp);
+ using var snapAppYamlStream = snapAppWriter.BuildSnapApp(snapApp);
await using var snapAppDllDstMemoryStream = snapOs.Filesystem.FileWrite(repackageDirSnapAppDllAbsolutePath);
- snapAppAssemblyDefinition.Write(snapAppDllDstMemoryStream);
+ await snapAppYamlStream.CopyToAsync(snapAppDllDstMemoryStream, cancellationToken);
progressSource.Raise(10);