| File: ServiceWorker\UpdateServiceWorkerFileWithVersion.cs | Web Access |
| Project: src\sdk\src\StaticWebAssetsSdk\Tasks\Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj (Microsoft.NET.Sdk.StaticWebAssets.Tasks) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable disable using Microsoft.Build.Framework; namespace Microsoft.AspNetCore.StaticWebAssets.Tasks; public class UpdateServiceWorkerFileWithVersion : Task { [Required] public string ServiceWorkerSource { get; set; } [Required] public string ServiceWorkerDestination { get; set; } [Required] public string ManifestVersion { get; set; } public override bool Execute() { if (!File.Exists(ServiceWorkerSource)) { Log.LogError("ServiceWorkerSource does not exist: {0}", ServiceWorkerSource); return false; } Log.LogMessage(MessageImportance.Low, "Reading ServiceWorkerSource from disk: {0}", ServiceWorkerSource); var sourceContent = File.ReadAllText(ServiceWorkerSource); var versionedContent = $"/* Manifest version: {ManifestVersion} */{Environment.NewLine}{sourceContent}"; Log.LogMessage(MessageImportance.Low, "Reading ServiceWorkerDestination from disk: {0}", ServiceWorkerDestination); var destinationContent = File.Exists(ServiceWorkerDestination) ? File.ReadAllText(ServiceWorkerDestination) : null; if (!string.Equals(destinationContent, versionedContent, StringComparison.Ordinal)) { Log.LogMessage(MessageImportance.Low, "Writing contents to ServiceWorkerDestination: {0}", ServiceWorkerDestination); File.WriteAllText(ServiceWorkerDestination, versionedContent); } else { Log.LogMessage(MessageImportance.Low, "ServiceWorkerDestination is up to date. No changes needed."); } return true; } }