mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-06-20 10:48:15 +08:00
build: 📦 新的解决方案文件格式 slnx 支持来了
This commit is contained in:
@ -18,7 +18,7 @@ using System.Net.Http.Json;
|
||||
{
|
||||
CreateNoWindow = true,
|
||||
FileName = "dotnet",
|
||||
Arguments = $"jb cleanupcode --include=\"{files}\" --no-build ../NetAdmin.sln",
|
||||
Arguments = $"jb cleanupcode --include=\"{files}\" --no-build ../NetAdmin.slnx",
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = true
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env pwsh
|
||||
|
||||
npm --prefix ../src/frontend/admin run prettier
|
||||
jb cleanupcode --no-build --include=$($(git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") }) -join ";") ../NetAdmin.sln
|
||||
jb cleanupcode --no-build --include=$( $( git status --porcelain | Where-Object { $_ -match "^\s*[MA]" } | ForEach-Object { $_.TrimStart(" M").TrimStart(" A") } ) -join ";" ) ../NetAdmin.slnx
|
||||
dot rbom -w -e refs -e .git -e node_modules ../
|
||||
dot trim -w -e refs -e .git -e node_modules ../
|
||||
dot tolf -w -e refs -e .git -e node_modules ../
|
@ -1,3 +1,3 @@
|
||||
#!/usr/bin/env pwsh
|
||||
|
||||
jb cleanupcode --no-build ../NetAdmin.sln
|
||||
jb cleanupcode --no-build ../NetAdmin.slnx
|
@ -5,18 +5,13 @@ while (!new[] { "1", "2" }.Contains(input))
|
||||
Console.WriteLine("1.nuget 2.project");
|
||||
input = Console.ReadLine();
|
||||
}
|
||||
var slnFile = Directory.GetFiles(@"../", "*.sln").First();
|
||||
var slnxFile = Directory.GetFiles(@"../", "*.slnx").First();
|
||||
var csprojFiles = Directory.GetFiles(@"../src", "*.csproj", new EnumerationOptions { RecurseSubdirectories = true });
|
||||
var slnContent = File.ReadAllText(slnFile);
|
||||
var slnContent = File.ReadAllText(slnxFile);
|
||||
|
||||
if (input == "1")
|
||||
{
|
||||
slnContent = Regex.Replace(slnContent, "\\nProject\\((.*)#refs", "\n##Project($1#refs");
|
||||
slnContent = Regex.Replace(slnContent, "\\nEndProject#refs", "\n##EndProject#refs");
|
||||
foreach (Match m in Regex.Matches(slnContent, "\"(\\{[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\\})\"#refs"))
|
||||
{
|
||||
slnContent = slnContent.Replace($" {m.Groups[1].Value}.", $" ##{m.Groups[1].Value}.");
|
||||
}
|
||||
slnContent = Regex.Replace(slnContent, "<Project Type=\"Refs\"(.*)>", "<!--<Project Type=\"Refs\"$1>-->");
|
||||
foreach (var csprojFile in csprojFiles)
|
||||
{
|
||||
var csprojContent = File.ReadAllText(csprojFile);
|
||||
@ -27,7 +22,7 @@ if (input == "1")
|
||||
}
|
||||
else
|
||||
{
|
||||
slnContent = Regex.Replace(slnContent, "##", "");
|
||||
slnContent = Regex.Replace(slnContent, "<!--(.*)-->", "$1");
|
||||
foreach (var csprojFile in csprojFiles)
|
||||
{
|
||||
var csprojContent = File.ReadAllText(csprojFile);
|
||||
@ -39,4 +34,4 @@ else
|
||||
|
||||
|
||||
Console.WriteLine(slnContent);
|
||||
File.WriteAllText(slnFile, slnContent);
|
||||
File.WriteAllText(slnxFile, slnContent);
|
@ -1,91 +0,0 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
var slnFile = Directory.GetFiles(@"../", "*.sln").First();
|
||||
var content = File.ReadAllText(slnFile);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"meta\", \"meta\", \"{5198A03D-0CAC-4828-A807-34A693F73859}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{5198A03D-0CAC-4828-A807-34A693F73859}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../", "*").Where(x => !x.EndsWith(".sln") && !x.EndsWith(".user"))
|
||||
.Select(x=>$" {Path.GetFileName(x)} = {Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"docker\", \"docker\", \"{E80A1018-C354-4A26-9029-8847BB9DA864}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docker", "docker", "{E80A1018-C354-4A26-9029-8847BB9DA864}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../docker", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = docker/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"workflows\", \"workflows\", \"{3C6F049E-3EE8-4D66-9AFF-E8A369032487}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{3C6F049E-3EE8-4D66-9AFF-E8A369032487}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../.github/workflows", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = .github/workflows/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"workflows\", \"workflows\", \"{BB5BB244-E7D2-4368-8C18-C1C0ED1E12D1}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{BB5BB244-E7D2-4368-8C18-C1C0ED1E12D1}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../.drone/workflows", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = .drone/workflows/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"scripts\", \"scripts\", \"{BB0B25C9-0901-4923-913F-00F9A6B352A5}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{BB0B25C9-0901-4923-913F-00F9A6B352A5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../scripts", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = scripts/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"Project\\(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\"\\) = \"build\", \"build\", \"{8E4C93BA-9493-4892-80C4-5E174C504829}\"(?:.|\n)*?EndProject",
|
||||
$$"""
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{8E4C93BA-9493-4892-80C4-5E174C504829}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../build", "*")
|
||||
.Select(x=>$" {Path.GetFileName(x)} = build/{Path.GetFileName(x)}")
|
||||
)}}
|
||||
EndProject
|
||||
"""
|
||||
);
|
||||
|
||||
Console.WriteLine(content);
|
||||
File.WriteAllText(slnFile, content);
|
87
scripts/sync.slnx.files.csx
Normal file
87
scripts/sync.slnx.files.csx
Normal file
@ -0,0 +1,87 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
var slnxFile = Directory.GetFiles(@"../", "*.slnx").First();
|
||||
var content = File.ReadAllText(slnxFile);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"<Folder Name=\"/meta/\">(?:.|\n)*?</Folder>",
|
||||
$$"""
|
||||
<Folder Name="/meta/">
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../", "*").Where(x => !x.EndsWith(".slnx") && !x.EndsWith(".user"))
|
||||
.Select(x=>$" <File Path=\"{Path.GetFileName(x)}\"/>")
|
||||
)}}
|
||||
</Folder>
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"<Folder Name=\"/docker/\">(?:.|\n)*?</Folder>",
|
||||
$$"""
|
||||
<Folder Name="/docker/">
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../docker", "*")
|
||||
.Select(x=>$" <File Path=\"docker/{Path.GetFileName(x)}\"/>")
|
||||
)}}
|
||||
</Folder>
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"<Folder Name=\"/.github/workflows/\">(?:.|\n)*?</Folder>",
|
||||
$$"""
|
||||
<Folder Name="/.github/workflows/">
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../.github/workflows", "*")
|
||||
.Select(x=>$" <File Path=\".github/workflows/{Path.GetFileName(x)}\"/>")
|
||||
)}}
|
||||
</Folder>
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"<Folder Name=\"/.drone/workflows/\">(?:.|\n)*?</Folder>",
|
||||
$$"""
|
||||
<Folder Name="/.drone/workflows/">
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../.drone/workflows", "*")
|
||||
.Select(x=>$" <File Path=\".drone/workflows/{Path.GetFileName(x)}\"/>")
|
||||
)}}
|
||||
</Folder>
|
||||
"""
|
||||
);
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"<Folder Name=\"/scripts/\">(?:.|\n)*?</Folder>",
|
||||
$$"""
|
||||
<Folder Name="/scripts/">
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../scripts", "*")
|
||||
.Select(x=>$" <File Path=\"scripts/{Path.GetFileName(x)}\"/>")
|
||||
)}}
|
||||
</Folder>
|
||||
"""
|
||||
);
|
||||
|
||||
|
||||
|
||||
content = Regex.Replace(
|
||||
content,
|
||||
"<Folder Name=\"/build/\">(?:.|\n)*?</Folder>",
|
||||
$$"""
|
||||
<Folder Name="/build/">
|
||||
{{string.Join('\n',
|
||||
Directory.GetFiles(@"../build", "*")
|
||||
.Select(x=>$" <File Path=\"build/{Path.GetFileName(x)}\"/>")
|
||||
)}}
|
||||
</Folder>
|
||||
"""
|
||||
);
|
||||
|
||||
Console.WriteLine(content);
|
||||
File.WriteAllText(slnxFile, content);
|
Reference in New Issue
Block a user