mirror of
https://github.com/Stone-Red-Code/docs-desktop.git
synced 2026-09-04 00:56:03 +02:00
Modify redirects generator to update a specified _.openpublishing.redirection_ file (#1181)
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
This tool uses the _definitions.json_ file to generate a _.openpublishing.redirection_ file. If a _.openpublishing.redirection_ file exists in the folder, it's updated and appended to.
|
This tool uses the _definitions.json_ file to generate a _.openpublishing.redirection_ file. If a _.openpublishing.redirection_ file exists in the folder, it's copied to the output folder and updated and appended to there.
|
||||||
|
|
||||||
|
Pass in the file path of a _.openpublishing.redirection_ file, and it'll be updated in-place. e.g. redirs.exe "c:\repos\dotnet\docs-desktop\.openpublishing.redirection.json"
|
||||||
|
|
||||||
The definitions generate two-way redirects between versioned content. The definition file is a json file that has some config at the start:
|
The definitions generate two-way redirects between versioned content. The definition file is a json file that has some config at the start:
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
@@ -7,10 +8,22 @@ const string OutputFile = ".openpublishing.redirection.json";
|
|||||||
|
|
||||||
JsonSerializerOptions options = new JsonSerializerOptions
|
JsonSerializerOptions options = new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
Converters = { new System.Text.Json.Serialization.JsonStringEnumConverter() },
|
Converters = { new JsonStringEnumConverter() },
|
||||||
ReadCommentHandling = JsonCommentHandling.Skip
|
ReadCommentHandling = JsonCommentHandling.Skip,
|
||||||
|
WriteIndented = true
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// If a .openpublishing.redirection.json path is provided,
|
||||||
|
// then copy that file to the output folder.
|
||||||
|
if (args.Length == 1 && File.Exists(args[0]))
|
||||||
|
{
|
||||||
|
// Get passed in .openpublishing.redirection.json path.
|
||||||
|
string srcRedirectFilePath = args[0];
|
||||||
|
|
||||||
|
// Copy .openpublishing.redirection.json to output folder.
|
||||||
|
File.Copy(srcRedirectFilePath, OutputFile, overwrite: true);
|
||||||
|
}
|
||||||
|
|
||||||
// Load the definitions
|
// Load the definitions
|
||||||
Console.WriteLine("Loading 'definitions.json'");
|
Console.WriteLine("Loading 'definitions.json'");
|
||||||
Document document = JsonSerializer.Deserialize<Document>(System.IO.File.ReadAllText("definitions.json"), options);
|
Document document = JsonSerializer.Deserialize<Document>(System.IO.File.ReadAllText("definitions.json"), options);
|
||||||
@@ -63,6 +76,22 @@ if (System.IO.File.Exists(OutputFile))
|
|||||||
Console.WriteLine($"Writing '{OutputFile}'");
|
Console.WriteLine($"Writing '{OutputFile}'");
|
||||||
System.IO.File.WriteAllText(OutputFile, JsonSerializer.Serialize(redirects));
|
System.IO.File.WriteAllText(OutputFile, JsonSerializer.Serialize(redirects));
|
||||||
|
|
||||||
|
// If a .openpublishing.redirection.json path is provided,
|
||||||
|
// then overwrite it with the formatted new content.
|
||||||
|
if (args.Length == 1 && File.Exists(args[0]))
|
||||||
|
{
|
||||||
|
// Get passed in .openpublishing.redirection.json path.
|
||||||
|
string srcRedirectFilePath = args[0];
|
||||||
|
|
||||||
|
// Format new json content.
|
||||||
|
string formattedJson = JsonSerializer.Serialize(redirects, options);
|
||||||
|
formattedJson = formattedJson.Replace(" ", " "); // match existing indent.
|
||||||
|
formattedJson += "\r\n"; // add newline at end.
|
||||||
|
|
||||||
|
// Save new content to source path.
|
||||||
|
File.WriteAllText(srcRedirectFilePath, formattedJson);
|
||||||
|
}
|
||||||
|
|
||||||
void CreateEntry(string sourceMoniker, string sourceUrl, string targetUrl)
|
void CreateEntry(string sourceMoniker, string sourceUrl, string targetUrl)
|
||||||
{
|
{
|
||||||
// Opposite repo paths are used here according to moniker
|
// Opposite repo paths are used here according to moniker
|
||||||
|
|||||||
Reference in New Issue
Block a user