-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPublish-PublishReadmeHelper.cs
More file actions
91 lines (65 loc) · 3.66 KB
/
Publish-PublishReadmeHelper.cs
File metadata and controls
91 lines (65 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
var searchDirectory = new DirectoryInfo(Environment.CurrentDirectory);
Console.Write(
$"Pointless Waymarks README.md -> Project Specific README_[project] running in {searchDirectory.FullName}");
var mainReadme = new FileInfo(Path.Combine(searchDirectory.FullName, "README-Fossil.md"));
if (mainReadme.Exists && File.Exists(Path.Combine(searchDirectory.FullName, "PointlessWaymarks.slnx")))
{
var gitMirrorInformation =
$"""
## Fossil Repository Mirror - This is a Read Only View ##
*This file is auto-generated - do not edit this directly, changes will be overwritten.*
{await File.ReadAllTextAsync(mainReadme.FullName)}
""";
var readmeFilename = Path.Combine(searchDirectory.FullName, "README.md");
await File.WriteAllTextAsync(readmeFilename, gitMirrorInformation);
Console.WriteLine($"Found the main README-Fossil.md - prepended mirror message and wrote to {readmeFilename}");
Console.WriteLine();
}
var subDirectories = searchDirectory.GetDirectories("*", SearchOption.AllDirectories)
.Where(d => !d.FullName.Contains(Path.DirectorySeparatorChar + "bin", StringComparison.OrdinalIgnoreCase) &&
!d.FullName.Contains(Path.DirectorySeparatorChar + "obj", StringComparison.OrdinalIgnoreCase) &&
!d.FullName.Contains(Path.DirectorySeparatorChar + "debug", StringComparison.OrdinalIgnoreCase) &&
!d.FullName.Contains(Path.DirectorySeparatorChar + "release", StringComparison.OrdinalIgnoreCase) &&
!d.FullName.Contains(Path.DirectorySeparatorChar + ".", StringComparison.OrdinalIgnoreCase))
.ToArray();
Console.WriteLine($"Scanning {subDirectories.Length} SubDirectories.");
foreach (var subDirectory in subDirectories)
try
{
var possibleReadme = new FileInfo(Path.Combine(subDirectory.FullName, "README.md"));
if (subDirectory.Name.Equals("PointlessWaymarksTools", StringComparison.OrdinalIgnoreCase))
{
var toolsMainReadme = Path.Combine(subDirectory.FullName, "README-Fossil.md");
if (File.Exists(toolsMainReadme))
{
var gitMirrorInformation =
$"""
## Fossil Repository Mirror - This is a Read Only View ##
*This file is auto-generated - do not edit this directly, changes will be overwritten.*
{await File.ReadAllTextAsync(toolsMainReadme)}
""";
await File.WriteAllTextAsync(Path.Combine(subDirectory.FullName, "README.md"), gitMirrorInformation);
Console.WriteLine(subDirectory.FullName);
Console.WriteLine(
" Found the main README-Fossil.md - prepended mirror message and wrote to README.md");
Console.WriteLine();
}
continue;
}
if (!possibleReadme.Exists) continue;
var readmeName = string.Join("-", subDirectory.Name.Split(".")[1..]);
if (string.IsNullOrWhiteSpace(readmeName))
{
var possibleSolutionFile = subDirectory.EnumerateFiles("*.sln", SearchOption.TopDirectoryOnly).ToList();
readmeName = possibleSolutionFile.Any()
? possibleSolutionFile.First().Name.Split(".")[0]
: subDirectory.Name;
}
var targetReadme = new FileInfo(Path.Combine(subDirectory.FullName, $"README_{readmeName}.md"));
possibleReadme.CopyTo(targetReadme.FullName, true);
Console.WriteLine($" Copied {possibleReadme.FullName} to {targetReadme.FullName}");
}
catch (Exception e)
{
Console.WriteLine($"!!! Error - continuing...{Environment.NewLine}{e}");
}