Skip to content

Commit

Permalink
[StaticWebAssets] Avoid reading manifest for hash
Browse files Browse the repository at this point in the history
  • Loading branch information
javiercn committed Sep 27, 2024
1 parent 7a63414 commit e2b1206
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<!-- Manifest paths -->
<_StaticWebAssetsManifestBase Condition="'$(_StaticWebAssetsManifestBase)' == ''">$(IntermediateOutputPath)</_StaticWebAssetsManifestBase>
<StaticWebAssetBuildManifestPath>$(_StaticWebAssetsManifestBase)staticwebassets.build.json</StaticWebAssetBuildManifestPath>
<StaticWebAssetsBuildManifestCacheFilePath>$(StaticWebAssetBuildManifestPath).cache</StaticWebAssetsBuildManifestCacheFilePath>
<StaticWebAssetPackManifestPath>$(_StaticWebAssetsManifestBase)staticwebassets.pack.json</StaticWebAssetPackManifestPath>
<StaticWebAssetDevelopmentManifestPath>$(_StaticWebAssetsManifestBase)staticwebassets.development.json</StaticWebAssetDevelopmentManifestPath>
<StaticWebAssetEndpointsBuildManifestPath>$(_StaticWebAssetsManifestBase)staticwebassets.build.endpoints.json</StaticWebAssetEndpointsBuildManifestPath>
Expand Down Expand Up @@ -620,7 +621,8 @@ Copyright (c) .NET Foundation. All rights reserved.
DiscoveryPatterns="@(StaticWebAssetDiscoveryPattern)"
Assets="@(StaticWebAsset)"
Endpoints="@(StaticWebAssetEndpoint)"
ManifestPath="$(StaticWebAssetBuildManifestPath)">
ManifestPath="$(StaticWebAssetBuildManifestPath)"
ManifestCacheFilePath="$(StaticWebAssetsBuildManifestCacheFilePath)">
</GenerateStaticWebAssetsManifest>

<GenerateStaticWebAssetEndpointsManifest
Expand Down Expand Up @@ -649,6 +651,7 @@ Copyright (c) .NET Foundation. All rights reserved.

<ItemGroup>
<FileWrites Include="$(StaticWebAssetBuildManifestPath)" />
<FileWrites Include="$(StaticWebAssetsBuildManifestCacheFilePath)" />
<FileWrites Include="$(StaticWebAssetDevelopmentManifestPath)" />
<FileWrites Include="$(StaticWebAssetEndpointsBuildManifestPath)" />
</ItemGroup>
Expand Down
10 changes: 9 additions & 1 deletion src/StaticWebAssetsSdk/Tasks/GenerateStaticWebAssetsManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ public class GenerateStaticWebAssetsManifest : Task
[Required]
public string ManifestPath { get; set; }

[Required]
public string ManifestCacheFilePath { get; set; }

public override bool Execute()
{
try
Expand Down Expand Up @@ -117,18 +120,23 @@ private IEnumerable<StaticWebAssetEndpoint> FilterPublishEndpointsIfNeeded(IEnum
private void PersistManifest(StaticWebAssetsManifest manifest)
{
var data = JsonSerializer.SerializeToUtf8Bytes(manifest, StaticWebAssetsJsonSerializerContext.RelaxedEscaping.StaticWebAssetsManifest);
var cacheFileExists = File.Exists(ManifestCacheFilePath);
var fileExists = File.Exists(ManifestPath);
var existingManifestHash = fileExists ? StaticWebAssetsManifest.FromJsonBytes(File.ReadAllBytes(ManifestPath)).Hash : "";
var existingManifestHash = cacheFileExists ?
File.ReadAllText(ManifestCacheFilePath) :
fileExists ? StaticWebAssetsManifest.FromJsonBytes(File.ReadAllBytes(ManifestPath)).Hash : "";

if (!fileExists)
{
Log.LogMessage(MessageImportance.Low, $"Creating manifest because manifest file '{ManifestPath}' does not exist.");
File.WriteAllBytes(ManifestPath, data);
File.WriteAllText(ManifestCacheFilePath, manifest.Hash);
}
else if (!string.Equals(manifest.Hash, existingManifestHash, StringComparison.Ordinal))
{
Log.LogMessage(MessageImportance.Low, $"Updating manifest because manifest version '{manifest.Hash}' is different from existing manifest hash '{existingManifestHash}'.");
File.WriteAllBytes(ManifestPath, data);
File.WriteAllText(ManifestCacheFilePath, manifest.Hash);
}
else
{
Expand Down

0 comments on commit e2b1206

Please # to comment.