Skip to content

Commit d6e080a

Browse files
Move RedirectGenerator to the build project
1 parent dc3cefd commit d6e080a

File tree

5 files changed

+28
-371
lines changed

5 files changed

+28
-371
lines changed

build/Program.cs

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
using System;
21
using System.IO;
32
using System.Linq;
4-
using System.Reflection;
53
using System.Text;
6-
using System.Threading.Tasks;
74
using Build;
85
using Cake.Common;
96
using Cake.Common.Build;
@@ -15,7 +12,6 @@
1512
using Cake.Common.Tools.DotNet.MSBuild;
1613
using Cake.Common.Tools.DotNet.Pack;
1714
using Cake.Common.Tools.DotNet.Restore;
18-
using Cake.Common.Tools.DotNet.Run;
1915
using Cake.Common.Tools.DotNet.Test;
2016
using Cake.Core;
2117
using Cake.Core.IO;
@@ -205,17 +201,37 @@ public void RunDocfx(FilePath docfxJson)
205201

206202
public void GenerateRedirects()
207203
{
208-
var redirectProjectFile = RedirectProjectDirectory.CombineWithFilePath("RedirectGenerator.csproj");
209-
this.Information(redirectProjectFile.FullPath);
210-
this.DotNetBuild(redirectProjectFile.FullPath);
211-
this.DotNetRun(redirectProjectFile.FullPath, new DotNetRunSettings
204+
var redirectFile = RedirectRootDirectory.CombineWithFilePath("_redirects");
205+
if (!this.FileExists(redirectFile))
212206
{
213-
WorkingDirectory = RedirectProjectDirectory,
214-
});
207+
this.Error($"Redirect file '{redirectFile}' does not exist");
208+
return;
209+
}
215210

216-
this.Information(RedirectTargetDirectory);
217211
this.EnsureDirectoryExists(RedirectTargetDirectory);
218-
this.CopyFiles(RedirectSourceDirectory + "/**/*", RedirectTargetDirectory, true);
212+
213+
var redirects = this.FileReadLines(redirectFile)
214+
.Select(line => line.Split(' '))
215+
.Select(parts => (source: parts[0], target: parts[1]))
216+
.ToList();
217+
218+
foreach (var (source, target) in redirects)
219+
{
220+
var fileName = source.StartsWith("/") || source.StartsWith("\\") ? source[1..] : source;
221+
var fullFileName = RedirectTargetDirectory.CombineWithFilePath(fileName);
222+
var content =
223+
$"<!doctype html>" +
224+
$"<html lang=en-us>" +
225+
$"<head>" +
226+
$"<title>{target}</title>" +
227+
$"<link rel=canonical href='{target}'>" +
228+
$"<meta name=robots content=\"noindex\">" +
229+
$"<meta charset=utf-8><meta http-equiv=refresh content=\"0; url={target}\">" +
230+
$"</head>" +
231+
$"</html>";
232+
this.EnsureDirectoryExists(fullFileName.GetDirectory());
233+
this.FileWriteText(fullFileName, content);
234+
}
219235
}
220236
}
221237

docs/_redirects/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/_redirects/RedirectGenerator/.gitignore

Lines changed: 0 additions & 293 deletions
This file was deleted.

0 commit comments

Comments
 (0)