Relative Path to relative to content

This commit is contained in:
Mike Phares 2023-07-18 21:46:56 -07:00
parent ec3afd2f96
commit 40b12d17f9
17 changed files with 716 additions and 172 deletions

234
.kanbn/board.json Normal file
View File

@ -0,0 +1,234 @@
{
"headings": [
{
"name": "Backlog",
"heading": "^:^+Backlog^:"
},
{
"name": "Todo",
"heading": "^:^+Todo^:"
},
{
"name": "In Progress",
"heading": "^:^c»^: ^+In Progress^:"
},
{
"name": "Done",
"heading": "^:^g✓^: ^+Done^:"
}
],
"lanes": [
{
"name": "All tasks",
"columns": [
[
{
"id": "relative-path-to-relative-to-content",
"name": "Relative Path to relative to content",
"description": "- [ ] Update method ConvertLinksForHugo to actual wanted results",
"metadata": {
"created": "2023-07-18T14:50:28.239Z",
"updated": "2023-07-18T14:54:09.060Z",
"assigned": "",
"progress": 0,
"tags": []
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Backlog",
"workload": 2,
"progress": 0,
"remainingWorkload": 2
},
{
"id": "markdown-links-to-json",
"name": "Markdown links to json",
"description": "",
"metadata": {
"created": "2023-07-18T14:53:27.412Z",
"updated": "2023-07-18T14:53:33.147Z",
"assigned": "",
"progress": 0,
"tags": []
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Backlog",
"workload": 2,
"progress": 0,
"remainingWorkload": 2
},
{
"id": "markdown-to-json",
"name": "Markdown to json",
"description": "",
"metadata": {
"created": "2023-07-18T14:48:18.667Z",
"updated": "2023-07-18T14:48:18.660Z",
"assigned": "",
"progress": 0,
"tags": []
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Backlog",
"workload": 2,
"progress": 0,
"remainingWorkload": 2
}
],
[
{
"id": "find-orphan-links",
"name": "Find orphan links",
"description": "",
"metadata": {
"created": "2023-07-08T00:30:27.277Z",
"updated": "2023-07-08T04:49:18.108Z",
"assigned": "",
"progress": 0,
"tags": [],
"started": "2023-07-08T04:41:56.433Z"
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Todo",
"workload": 2,
"progress": 0,
"remainingWorkload": 2
}
],
[],
[
{
"id": "break-circular-references",
"name": "Break Circular References",
"description": "",
"metadata": {
"created": "2023-07-08T00:31:18.301Z",
"updated": "2023-07-08T03:13:47.959Z",
"assigned": "",
"progress": 0,
"tags": [],
"started": "2023-07-08T00:31:22.970Z",
"completed": "2023-07-08T03:13:47.959Z"
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Done",
"workload": 2,
"progress": 1,
"remainingWorkload": 0
},
{
"id": "populate-a-collection-of-file-info-front-matter-and-first-indent-of-1",
"name": "Populate a collection of FileInfo, Front Matter and First # indent of 1",
"description": "",
"metadata": {
"created": "2023-07-08T00:30:00.353Z",
"updated": "2023-07-08T04:08:04.155Z",
"assigned": "",
"progress": 0,
"tags": [],
"started": "2023-07-08T02:17:23.556Z",
"completed": "2023-07-08T04:08:04.156Z"
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Done",
"workload": 2,
"progress": 1,
"remainingWorkload": 0
},
{
"id": "use-humanizer-on-title-of-links",
"name": "Use humanizer on title of links",
"description": "",
"metadata": {
"created": "2023-07-08T03:22:14.065Z",
"updated": "2023-07-08T04:08:05.706Z",
"assigned": "",
"progress": 0,
"tags": [],
"completed": "2023-07-08T04:08:05.706Z"
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Done",
"workload": 2,
"progress": 1,
"remainingWorkload": 0
},
{
"id": "convert-files-to-slug-name",
"name": "Convert files to slug name",
"description": "",
"metadata": {
"created": "2023-07-08T00:31:48.068Z",
"updated": "2023-07-08T03:13:39.928Z",
"assigned": "",
"progress": 0,
"tags": [],
"completed": "2023-07-08T03:13:39.928Z"
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Done",
"workload": 2,
"progress": 1,
"remainingWorkload": 0
},
{
"id": "convert-wiki-links-to-markdown-links",
"name": "Convert Wiki Links to Markdown Links",
"description": "",
"metadata": {
"created": "2023-07-08T00:28:50.180Z",
"updated": "2023-07-08T03:14:14.308Z",
"assigned": "",
"progress": 0,
"tags": [],
"started": "2023-07-08T02:17:20.346Z",
"completed": "2023-07-08T03:14:14.308Z"
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Done",
"workload": 2,
"progress": 1,
"remainingWorkload": 0
},
{
"id": "add-update-date-in-front-matter",
"name": "Add / Update date in Front Matter",
"description": "- [ ] Maybe done",
"metadata": {
"created": "2023-07-08T00:27:35.865Z",
"updated": "2023-07-08T03:13:43.907Z",
"assigned": "",
"progress": 0,
"tags": [],
"completed": "2023-07-08T03:13:43.907Z"
},
"subTasks": [],
"relations": [],
"comments": [],
"column": "Done",
"workload": 2,
"progress": 1,
"remainingWorkload": 0
}
]
]
}
]
}

Binary file not shown.

View File

@ -13,6 +13,9 @@ updated: 2023-07-07T03:46:47.454Z
## Backlog ## Backlog
- [markdown-links-to-json](tasks/markdown-links-to-json.md)
- [markdown-to-json](tasks/markdown-to-json.md)
## Todo ## Todo
- [find-orphan-links](tasks/find-orphan-links.md) - [find-orphan-links](tasks/find-orphan-links.md)
@ -27,3 +30,4 @@ updated: 2023-07-07T03:46:47.454Z
- [convert-files-to-slug-name](tasks/convert-files-to-slug-name.md) - [convert-files-to-slug-name](tasks/convert-files-to-slug-name.md)
- [convert-wiki-links-to-markdown-links](tasks/convert-wiki-links-to-markdown-links.md) - [convert-wiki-links-to-markdown-links](tasks/convert-wiki-links-to-markdown-links.md)
- [add-update-date-in-front-matter](tasks/add-update-date-in-front-matter.md) - [add-update-date-in-front-matter](tasks/add-update-date-in-front-matter.md)
- [relative-path-to-relative-to-content](tasks/relative-path-to-relative-to-content.md)

View File

@ -0,0 +1,10 @@
---
type: "kanbn"
created: 2023-07-18T14:53:27.412Z
updated: 2023-07-18T14:53:33.147Z
assigned: ""
progress: 0
tags: []
---
# Markdown links to json

View File

@ -0,0 +1,10 @@
---
type: "kanbn"
created: 2023-07-18T14:48:18.667Z
updated: 2023-07-18T14:48:18.660Z
assigned: ""
progress: 0
tags: []
---
# Markdown to json

View File

@ -0,0 +1,11 @@
---
type: kanbn
created: 2023-07-18T14:50:28.239Z
updated: 2023-07-19T04:46:32.554Z
assigned: ""
progress: 0
tags: []
completed: 2023-07-19T04:40:41.523Z
---
# Relative Path to relative to content

9
.vscode/launch.json vendored
View File

@ -37,14 +37,5 @@
// dotnet run "s" "C:/Users/phares/.nuget/packages" // dotnet run "s" "C:/Users/phares/.nuget/packages"
// dotnet run "s" "D:/ProgramData/EC_EAFRepository/nupkg" // dotnet run "s" "D:/ProgramData/EC_EAFRepository/nupkg"
// dotnet run "s" "D:/Baget/packages" // dotnet run "s" "D:/Baget/packages"
// dotnet run "s" "L:/Baget/packages"
// dotnet run "s" "L:/Verdaccio/storage"
// dotnet run "s" "\\messdv002.na.infineon.com\Candela\BaGet\packages" // dotnet run "s" "\\messdv002.na.infineon.com\Candela\BaGet\packages"
// dotnet run "s" "\\messa01ec.ec.local\apps\Metrology\Run Data Repository"
// dotnet run "s" "D:/Documents/Obsidian/Infineon/.kanbn"
// dotnet run "s" "L:/Git/View-by-Distance-MKLink-Console/.kanbn"
// dotnet run "s" "T:/MESAFIBACKLOG/06_SourceCode/MESAFIBACKLOG/Adaptation/.kanbn" // dotnet run "s" "T:/MESAFIBACKLOG/06_SourceCode/MESAFIBACKLOG/Adaptation/.kanbn"
// dotnet run "s" "D:/Documents/Projects/EC-Documentation - Foam/.kanbn"
// dotnet run "s" "D:/Documents/Notes/Infineon"
// dotnet run "s" "D:/5-Other-Small/Notes/Infineon/.kanbn"
// dotnet run "s" "D:/Documents/Projects/EC-Documentation"

View File

@ -14,6 +14,8 @@
"endianness", "endianness",
"Infineon", "Infineon",
"Kanban", "Kanban",
"kanbn",
"onenote",
"Phares", "Phares",
"Serilog", "Serilog",
"SYSLIB" "SYSLIB"

50
.vscode/tasks.json vendored
View File

@ -2,7 +2,7 @@
"version": "2.0.0", "version": "2.0.0",
"tasks": [ "tasks": [
{ {
"label": "userSecretsInit", "label": "User Secrets Init",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
@ -14,7 +14,7 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "userSecretsSet", "label": "User Secrets Set",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
@ -28,7 +28,7 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "format", "label": "Format",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
@ -79,7 +79,7 @@
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
}, },
{ {
"label": "publishAot", "label": "Publish AOT",
"command": "dotnet", "command": "dotnet",
"type": "process", "type": "process",
"args": [ "args": [
@ -96,6 +96,48 @@
"/consoleloggerparameters:NoSummary" "/consoleloggerparameters:NoSummary"
], ],
"problemMatcher": "$msCompile" "problemMatcher": "$msCompile"
},
{
"label": "File-Folder-Helper AOT s H Run Data Repository",
"type": "shell",
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe s H '\\\\messa01ec.ec.local\\apps\\Metrology\\Run Data Repository'",
"problemMatcher": []
},
{
"label": "File-Folder-Helper AOT s J Verdaccio",
"type": "shell",
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe s J 'L:/Verdaccio/storage'",
"problemMatcher": []
},
{
"label": "File-Folder-Helper AOT s M Self .Kanbn Tasks",
"type": "shell",
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe s M '.kanbn/tasks'",
"problemMatcher": []
},
{
"label": "File-Folder-Helper AOT s S BaGet",
"type": "shell",
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe s S 'L:/BaGet/packages'",
"problemMatcher": []
},
{
"label": "Kanbn Console",
"type": "npm",
"script": "kanbn.board",
"problemMatcher": []
},
{
"label": "Kanbn Write Boad",
"type": "shell",
"command": "& kanbn board -j | L:/Git/kanbn2md/kanbn2md.exe >.kanbn/board.md",
"problemMatcher": []
},
{
"label": "Kanbn Write json",
"type": "npm",
"script": "kanbn.board.json",
"problemMatcher": []
} }
] ]
} }

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<LangVersion>11.0</LangVersion> <LangVersion>11.0</LangVersion>
@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Humanizer.Core" Version="2.14.1" /> <PackageReference Include="Humanizer.Core" Version="2.14.1" />
<PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="7.0.8" /> <PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="7.0.9" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
<PackageReference Include="System.Text.Json" Version="7.0.3" /> <PackageReference Include="System.Text.Json" Version="7.0.3" />

View File

@ -1,12 +1,15 @@
using Humanizer;
using System.Globalization; using System.Globalization;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
namespace File_Folder_Helper.Helpers; namespace File_Folder_Helper.Helpers;
internal static class HelperCreateNoteFiles internal static partial class HelperCreateNoteFiles
{ {
[GeneratedRegex("[^a-z0-9-]")]
private static partial Regex AlphaNumOnly();
private static void CleanExistingFiles(string directory, long ticks) private static void CleanExistingFiles(string directory, long ticks)
{ {
string check; string check;
@ -97,31 +100,102 @@ internal static class HelperCreateNoteFiles
} }
} }
private static string? GetTags(string tagsText)
{
string? result;
StringBuilder stringBuilder = new();
if (string.IsNullOrEmpty(tagsText))
result = null;
else
{
string[] segments;
_ = stringBuilder.AppendLine("tags:");
string[] tags = tagsText.Split(';', StringSplitOptions.RemoveEmptyEntries);
foreach (string tag in tags)
{
segments = tag.Split(':');
_ = stringBuilder.AppendLine($"- '{segments.First()}'");
}
result = stringBuilder.ToString().Trim();
}
return result;
}
private static string? GetLinks(string type, string linksText)
{
string? result;
StringBuilder stringBuilder = new();
if (!string.IsNullOrEmpty(linksText))
result = null;
else
{
string linkLower;
string[] segments;
string[] links = linksText.Split(';', StringSplitOptions.RemoveEmptyEntries);
foreach (string link in links)
{
segments = link.Split(':');
linkLower = AlphaNumOnly().Replace(segments.First().Trim().ToLower(), "-").Replace("--", "-");
if (segments.Length == 1)
_ = stringBuilder.AppendLine($"- [[{type}/{linkLower}]]");
else if (segments.Length == 2)
_ = stringBuilder.AppendLine($"- [{type}/{linkLower}]({segments.Last()})");
else
continue;
}
result = stringBuilder.ToString().Trim();
}
return result;
}
private static string? GetAttributes(string[] columns, string[]? headerColumns, int expectedCount)
{
string? result;
if (headerColumns is null || columns.Length <= expectedCount)
result = null;
else
{
StringBuilder stringBuilder = new();
for (int j = expectedCount; j < columns.Length; j++)
{
if (headerColumns.Length <= j)
continue;
_ = stringBuilder.AppendLine($"{headerColumns[j].Trim()}: '{columns[j].Trim()}'");
}
result = stringBuilder.ToString().Trim();
}
return result;
}
private static void CreateImportFiles(long ticks, List<string> importFiles) private static void CreateImportFiles(long ticks, List<string> importFiles)
{ {
bool csv; bool csv;
bool tsv; bool tsv;
string file; string file;
string text;
string type; string type;
string title; string title;
string? tags;
string? links;
string[] lines; string[] lines;
string[] links; int bodyKey = 5;
int bodyKey = 4; int tagsKey = 3;
int typeKey = 0; int typeKey = 0;
string linkText; string fileName;
int linksKey = 3; string tagsText;
int linksKey = 4;
int titleKey = 1; int titleKey = 1;
string linksText;
string[] columns; string[] columns;
string? directory; string? directory;
string[] segments; string? attributes;
int descriptionKey = 2; int descriptionKey = 2;
string[]? headerColumns; string[]? headerColumns;
string destinationDirectory; string destinationDirectory;
List<string> allLines = new();
DateTime dateTime = new(ticks); DateTime dateTime = new(ticks);
StringBuilder attributes = new(); string csvHeader = "type,title,description,tags,links,body";
StringBuilder keyValuePairLinks = new(); string tsvHeader = "type\ttitle\tdescription\ttags\tlinks\tbody";
string csvHeader = "type,title,description,links,body";
string tsvHeader = "type\ttitle\tdescription\tlinks\tbody";
int expectedCount = csvHeader.Length - csvHeader.Replace(",", string.Empty).Length + 1; int expectedCount = csvHeader.Length - csvHeader.Replace(",", string.Empty).Length + 1;
foreach (string importFile in importFiles) foreach (string importFile in importFiles)
{ {
@ -158,58 +232,42 @@ internal static class HelperCreateNoteFiles
continue; continue;
if (columns.Length < expectedCount) if (columns.Length < expectedCount)
continue; continue;
_ = attributes.Clear();
_ = keyValuePairLinks.Clear();
title = columns[titleKey].Trim(); title = columns[titleKey].Trim();
linkText = columns[linksKey].Trim(); tagsText = columns[tagsKey].Trim();
type = columns[typeKey].Trim().ToLower().Replace(' ', '-'); linksText = columns[linksKey].Trim();
if (string.IsNullOrEmpty(linkText)) fileName = AlphaNumOnly().Replace(title.ToLower(), "-").Replace("--", "-");
links = Array.Empty<string>(); type = AlphaNumOnly().Replace(columns[typeKey].Trim().ToLower(), "-").Replace("--", "-");
else tags = GetTags(tagsText);
links = linkText.Split(';', StringSplitOptions.RemoveEmptyEntries); links = GetLinks(type, linksText);
if (headerColumns is not null && columns.Length > expectedCount) attributes = GetAttributes(columns, headerColumns, expectedCount);
{
for (int j = expectedCount; j < columns.Length; j++)
{
if (headerColumns.Length <= j)
continue;
_ = attributes.AppendLine($"{headerColumns[j].Trim().Camelize()}: '{columns[j].Trim()}'");
}
}
foreach (string link in links)
{
segments = link.Split(':');
if (segments.Length == 1)
_ = keyValuePairLinks.AppendLine($"- [[{segments.First()}]]");
else if (segments.Length == 2)
_ = keyValuePairLinks.AppendLine($"- [{segments.First()}]({segments.Last()})");
else
continue;
}
destinationDirectory = Path.Combine(directory, type); destinationDirectory = Path.Combine(directory, type);
if (!Directory.Exists(destinationDirectory)) if (!Directory.Exists(destinationDirectory))
_ = Directory.CreateDirectory(destinationDirectory); _ = Directory.CreateDirectory(destinationDirectory);
file = Path.Combine(destinationDirectory, $"{title.ToLower().Replace(' ', '-')}.md"); file = Path.Combine(destinationDirectory, $"{fileName}.md");
File.WriteAllLines(file, new string[] allLines.Clear();
{ allLines.Add("---");
"---", allLines.Add($"type: '{type}'");
$"type: '{type}'", allLines.Add($"title: '{title}'");
$"title: '{title}'", allLines.Add($"description: '{columns[descriptionKey].Trim()}'");
$"description: '{columns[descriptionKey].Trim()}'", allLines.Add($"created: {dateTime:yyyy-MM-ddTHH:mm:ss.fffZ}");
$"created: {dateTime:yyyy-MM-ddTHH:mm:ss.fffZ}", allLines.Add($"updated: {dateTime:yyyy-MM-ddTHH:mm:ss.fffZ}");
$"updated: {dateTime:yyyy-MM-ddTHH:mm:ss.fffZ}", if (!string.IsNullOrEmpty(tags))
attributes.ToString(), allLines.Add(tags);
"---", if (!string.IsNullOrEmpty(attributes))
string.Empty, allLines.Add(attributes);
$"# {title}", allLines.Add("---");
string.Empty, allLines.Add(string.Empty);
keyValuePairLinks.ToString(), allLines.Add($"# {title}");
string.Empty, allLines.Add(string.Empty);
$"## Comment {dateTime:yyyy-MM-dd}", if (!string.IsNullOrEmpty(links))
string.Empty, allLines.Add(links);
columns[bodyKey].Trim(), allLines.Add(string.Empty);
string.Empty, allLines.Add($"## Comment {dateTime:yyyy-MM-dd}");
}); allLines.Add(string.Empty);
allLines.Add(columns[bodyKey].Trim());
allLines.Add(string.Empty);
text = string.Join(Environment.NewLine, allLines);
File.WriteAllText(file, text);
} }
} }
} }

View File

@ -1,4 +1,5 @@
using Humanizer; using File_Folder_Helper.Models;
using Microsoft.Extensions.Logging;
using System.Text; using System.Text;
using System.Text.Json; using System.Text.Json;
@ -7,8 +8,12 @@ namespace File_Folder_Helper.Helpers;
internal static partial class HelperMarkdown internal static partial class HelperMarkdown
{ {
private record Record(string Source,
string? StartAt,
string? Destination);
/// <summary> /// <summary>
/// Determines a text file's encoding by analyzing its byte order mark (BOM). /// Determines files text file's encoding by analyzing its byte order mark (BOM).
/// Defaults to ASCII when detection of the text file's endianness fails. /// Defaults to ASCII when detection of the text file's endianness fails.
/// </summary> /// </summary>
/// <param name="filename">The text file to analyze.</param> /// <param name="filename">The text file to analyze.</param>
@ -38,14 +43,20 @@ internal static partial class HelperMarkdown
return result; return result;
} }
internal static string[] GetFiles(Models.AppSettings appSettings, string directory) internal static string[] GetFiles(AppSettings appSettings, string directory)
{ {
string[] files = Directory.GetFiles(directory, "*.md", SearchOption.AllDirectories). string[] results = Directory.GetFiles(directory, "*.md", SearchOption.AllDirectories).
Where(l => !appSettings.Exclude.Any(m => l.Contains(m))).ToArray(); Where(l => !appSettings.Exclude.Any(m => l.Contains(m))).ToArray();
return files; return results;
} }
private static (string type, string h1) GetTypeAndH1(Models.AppSettings appSettings, string h1, List<string> lines, LineNumber lineNumber) private static string[] GetFiles(AppSettings appSettings, Record record)
{
string[] results = record.StartAt is null ? GetFiles(appSettings, record.Source) : GetFiles(appSettings, record.StartAt);
return results;
}
private static (string type, string h1) GetTypeAndH1(AppSettings appSettings, string h1, List<string> lines, LineNumber lineNumber)
{ {
string type = lineNumber.Type is null ? appSettings.DefaultNoteType : lines[lineNumber.Type.Value].Replace("type: ", string.Empty); string type = lineNumber.Type is null ? appSettings.DefaultNoteType : lines[lineNumber.Type.Value].Replace("type: ", string.Empty);
string h1FromFile = lineNumber.H1 is null ? h1 : lines[lineNumber.H1.Value][2..]; string h1FromFile = lineNumber.H1 is null ? h1 : lines[lineNumber.H1.Value][2..];
@ -108,7 +119,7 @@ internal static partial class HelperMarkdown
return (lines.ToList(), lineNumber); return (lines.ToList(), lineNumber);
} }
internal static List<(MarkdownFile, string[])> GetCollection(Models.AppSettings appSettings, string[] files) internal static List<(MarkdownFile, string[])> GetCollection(AppSettings appSettings, string[] files)
{ {
List<(MarkdownFile, string[])> results = new(); List<(MarkdownFile, string[])> results = new();
string h1; string h1;
@ -125,7 +136,7 @@ internal static partial class HelperMarkdown
continue; continue;
(lines, lineNumber) = GetStatusAndMetaEndLineNumbers(fileInfo); (lines, lineNumber) = GetStatusAndMetaEndLineNumbers(fileInfo);
fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName); fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName);
h1 = fileNameWithoutExtension.ToLower().Hyphenate(); h1 = fileNameWithoutExtension.ToLower().Replace("%20", "-").Replace(' ', '-');
if (lines.Any()) if (lines.Any())
(type, h1) = GetTypeAndH1(appSettings, h1, lines, lineNumber); (type, h1) = GetTypeAndH1(appSettings, h1, lines, lineNumber);
else else
@ -140,9 +151,9 @@ internal static partial class HelperMarkdown
return results; return results;
} }
internal static bool SetFrontMatterAndH1(Models.AppSettings appSettings, List<(MarkdownFile, string[])> collection) private static int SetFrontMatterAndH1(AppSettings appSettings, List<(MarkdownFile, string[])> collection)
{ {
bool result = false; int result = 0;
string h1Line; string h1Line;
string typeLine; string typeLine;
string createdLine; string createdLine;
@ -203,17 +214,16 @@ internal static partial class HelperMarkdown
else if (results[markdownFile.LineNumber.Created.Value][..createdLineCompare.Length] != createdLineCompare) else if (results[markdownFile.LineNumber.Created.Value][..createdLineCompare.Length] != createdLineCompare)
results[markdownFile.LineNumber.Created.Value] = createdLine; results[markdownFile.LineNumber.Created.Value] = createdLine;
} }
if (!result)
result = true;
File.WriteAllLines(markdownFile.File, results); File.WriteAllLines(markdownFile.File, results);
File.SetLastWriteTime(markdownFile.File, markdownFile.LastWriteDateTime); File.SetLastWriteTime(markdownFile.File, markdownFile.LastWriteDateTime);
result += 1;
} }
return result; return result;
} }
internal static bool CircularReference(List<(MarkdownFile, string[])> collection) private static int CircularReference(ILogger<Worker> logger, List<(MarkdownFile, string[])> collection)
{ {
bool result = false; int result = 0;
string line; string line;
string check; string check;
bool circularReference; bool circularReference;
@ -255,22 +265,22 @@ internal static partial class HelperMarkdown
if (lines[i] == line) if (lines[i] == line)
continue; continue;
lines[i] = line; lines[i] = line;
logger.LogInformation("circular reference for <{file}>", markdownFile.FileName);
if (!circularReference) if (!circularReference)
circularReference = true; circularReference = true;
} }
if (circularReference) if (circularReference)
{ {
if (!result)
result = true;
File.WriteAllLines(markdownFile.File, lines); File.WriteAllLines(markdownFile.File, lines);
result += 1;
} }
} }
return result; return result;
} }
internal static bool FindReplace(List<(MarkdownFile, string[])> collection) private static int FindReplace(List<(MarkdownFile, string[])> collection)
{ {
bool result = false; int result = 0;
bool found; bool found;
string line; string line;
string check; string check;
@ -305,9 +315,8 @@ internal static partial class HelperMarkdown
} }
if (found) if (found)
{ {
if (!result)
result = true;
File.WriteAllLines(markdownFile.File, lines); File.WriteAllLines(markdownFile.File, lines);
result += 1;
} }
} }
return result; return result;
@ -330,31 +339,65 @@ internal static partial class HelperMarkdown
return results; return results;
} }
private static Dictionary<string, List<MarkdownFile>> GetKeyValuePairs(AppSettings appSettings, Record record)
{
Dictionary<string, List<MarkdownFile>> results;
string[] files = GetFiles(appSettings, record.Source);
List<(MarkdownFile MarkdownFile, string[] Lines)> collection = GetCollection(appSettings, files);
results = GetKeyValuePairs(collection);
return results;
}
private static (string?, string?) GetMatchAndTitle(string? directory, List<MarkdownFile> markdownFiles)
{
int check = 0;
string? match = null;
string? title = null;
string? directoryName = Path.GetFileName(directory);
foreach (MarkdownFile markdownFile in markdownFiles)
{
if (directory is null || directoryName is null)
continue;
if (markdownFiles.Count == 1)
{
check++;
match = markdownFile.File;
title = markdownFile.H1;
}
else
{
if (Path.GetFileName(markdownFile.Directory) == directoryName)
{
check++;
match = markdownFile.File;
title = markdownFile.H1;
}
}
}
if (check != 1)
{
match = null;
title = null;
}
return (match, title);
}
private static (string?, string?) GetRelativePath(Dictionary<string, List<MarkdownFile>> keyValuePairs, MarkdownFile markdownFile, string file) private static (string?, string?) GetRelativePath(Dictionary<string, List<MarkdownFile>> keyValuePairs, MarkdownFile markdownFile, string file)
{ {
string? result; string? result;
string? match; string? match;
string? title; string? title;
List<MarkdownFile>? markdownFiles; List<MarkdownFile>? markdownFiles;
string? directory = Path.GetDirectoryName(file);
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file); string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file);
if (keyValuePairs.TryGetValue(fileNameWithoutExtension, out markdownFiles)) if (keyValuePairs.TryGetValue(fileNameWithoutExtension, out markdownFiles))
{ (match, title) = GetMatchAndTitle(directory, markdownFiles);
if (markdownFiles.Count != 1)
(match, title) = (null, null);
else
(match, title) = (markdownFiles.First().File, markdownFiles.First().H1);
}
else else
{ {
if (!keyValuePairs.TryGetValue(fileNameWithoutExtension.ToLower(), out markdownFiles)) if (keyValuePairs.TryGetValue(fileNameWithoutExtension.ToLower(), out markdownFiles))
(match, title) = (null, null); (match, title) = GetMatchAndTitle(directory, markdownFiles);
else else
{
if (markdownFiles.Count != 1)
(match, title) = (null, null); (match, title) = (null, null);
else
(match, title) = (markdownFiles.First().File, markdownFiles.First().H1);
}
} }
if (match is null) if (match is null)
{ {
@ -411,19 +454,17 @@ internal static partial class HelperMarkdown
return (result, title); return (result, title);
} }
internal static bool ConvertToRelativePath(List<(MarkdownFile MarkdownFile, string[] Lines)> collection) private static int ConvertToRelativePath(AppSettings appSettings, ILogger<Worker> logger, Record record, List<(MarkdownFile MarkdownFile, string[] Lines)> collection)
{ {
bool result = false; int result = 0;
bool write; bool write;
string line; string line;
string after;
string before;
string? title; string? title;
string[] segmentsA; string[] segmentsA;
string[] segmentsB; string[] segmentsB;
string[] segmentsC; string[] segmentsC;
string? relativePath; string? relativePath;
Dictionary<string, List<MarkdownFile>> keyValuePairs = GetKeyValuePairs(collection); Dictionary<string, List<MarkdownFile>> keyValuePairs = record.StartAt is null ? GetKeyValuePairs(collection) : GetKeyValuePairs(appSettings, record);
foreach ((MarkdownFile markdownFile, string[] lines) in collection) foreach ((MarkdownFile markdownFile, string[] lines) in collection)
{ {
if (lines.Length < 1) if (lines.Length < 1)
@ -437,19 +478,20 @@ internal static partial class HelperMarkdown
segmentsB = segmentsA.First().Split("[["); segmentsB = segmentsA.First().Split("[[");
if (segmentsB.Length is not 2 or 3) if (segmentsB.Length is not 2 or 3)
continue; continue;
after = segmentsA.Last();
before = segmentsB.First();
segmentsC = segmentsB.Last().Split('|'); segmentsC = segmentsB.Last().Split('|');
(relativePath, title) = GetRelativePath(keyValuePairs, markdownFile, segmentsC.First()); (relativePath, title) = GetRelativePath(keyValuePairs, markdownFile, segmentsC.First());
if (relativePath is null) if (relativePath is null)
{
logger.LogInformation("Didn't find {line} in <{file}>", lines[i], markdownFile.FileNameWithoutExtension);
continue; continue;
}
if (title is null) if (title is null)
{ {
title = segmentsC.Last().Humanize(LetterCasing.Title); title = segmentsC.Last();
if (title.Length != segmentsC.Last().Length) if (title.Length != segmentsC.Last().Length)
title = segmentsC.Last(); title = segmentsC.Last();
} }
line = $"{before}[{title}]({relativePath.Replace('\\', '/')}){after}"; line = $"{segmentsB.First()}[{title}]({relativePath.Replace('\\', '/')}){segmentsA.Last()}";
if (lines[i] == line) if (lines[i] == line)
continue; continue;
lines[i] = line; lines[i] = line;
@ -458,19 +500,18 @@ internal static partial class HelperMarkdown
} }
if (write) if (write)
{ {
if (!result)
result = true;
File.WriteAllLines(markdownFile.File, lines); File.WriteAllLines(markdownFile.File, lines);
result += 1;
} }
} }
return result; return result;
} }
internal static bool ConvertFileToSlugName(List<(MarkdownFile MarkdownFile, string[] Lines)> collection) private static int ConvertFileToSlugName(AppSettings appSettings, ILogger<Worker> logger, Record record, List<(MarkdownFile MarkdownFile, string[] Lines)> collection)
{ {
bool result = false; int result = 0;
bool write;
string h1; string h1;
bool write;
string file; string file;
string line; string line;
string? title; string? title;
@ -483,10 +524,9 @@ internal static partial class HelperMarkdown
string[] segmentsC; string[] segmentsC;
string checkFileName; string checkFileName;
string segmentsALast; string segmentsALast;
string? relativePath;
string segmentsBFirst; string segmentsBFirst;
string relativeDirectory; Dictionary<string, List<MarkdownFile>> keyValuePairs = record.StartAt is null ? GetKeyValuePairs(collection) : GetKeyValuePairs(appSettings, record);
string formattedRelativeDirectory;
Dictionary<string, List<MarkdownFile>> keyValuePairs = GetKeyValuePairs(collection);
foreach ((MarkdownFile markdownFile, string[] lines) in collection) foreach ((MarkdownFile markdownFile, string[] lines) in collection)
{ {
if (markdownFile.FileNameWithoutExtension == "index") if (markdownFile.FileNameWithoutExtension == "index")
@ -511,25 +551,31 @@ internal static partial class HelperMarkdown
directory = Path.GetDirectoryName(file); directory = Path.GetDirectoryName(file);
if (string.IsNullOrEmpty(directory)) if (string.IsNullOrEmpty(directory))
continue; continue;
relativeDirectory = segmentsBFirst[..^fileName.Length];
formattedRelativeDirectory = relativeDirectory.Replace(" ", "%20");
checkFileName = fileName.ToLower().Replace("%20", "-").Replace(' ', '-'); checkFileName = fileName.ToLower().Replace("%20", "-").Replace(' ', '-');
checkName = Path.Combine(directory, checkFileName); checkName = Path.Combine(directory, checkFileName);
segmentsC = segmentsA.First().Split('['); segmentsC = segmentsA.First().Split('[');
(_, title) = GetRelativePath(keyValuePairs, markdownFile, file); (relativePath, title) = GetRelativePath(keyValuePairs, markdownFile, file);
if (relativePath is null)
{
logger.LogInformation("Didn't find {line} in <{file}>", lines[i], markdownFile.FileNameWithoutExtension);
continue;
}
if (title is null) if (title is null)
{ {
title = segmentsC.Last().Humanize(LetterCasing.Title); title = segmentsC.Last();
if (title.Length != segmentsC.Last().Length) if (title.Length != segmentsC.Last().Length)
title = segmentsC.Last(); title = segmentsC.Last();
} }
line = $"{segmentsC.First()}[{title}]({Path.Combine(formattedRelativeDirectory, checkFileName)}){segmentsB.Last()}"; line = $"{segmentsC.First()}[{title}]({relativePath.Replace('\\', '/')}){segmentsB.Last()}";
if (lines[i] == line) if (lines[i] == line)
continue; continue;
if (fileName.Contains(' ') || fileName.Contains("%20")) if (fileName.Contains(' ') || fileName.Contains("%20"))
{ {
if (!File.Exists(file)) if (!File.Exists(file))
{
logger.LogInformation("Didn't find <{file}>", file);
continue; continue;
}
if (File.Exists(checkName)) if (File.Exists(checkName))
continue; continue;
File.Move(file, checkName); File.Move(file, checkName);
@ -539,7 +585,10 @@ internal static partial class HelperMarkdown
if (file != checkName) if (file != checkName)
{ {
if (!File.Exists(file)) if (!File.Exists(file))
{
logger.LogInformation("Didn't find <{file}>", file);
continue; continue;
}
File.Move(file, checkName); File.Move(file, checkName);
} }
} }
@ -549,12 +598,11 @@ internal static partial class HelperMarkdown
} }
if (write) if (write)
{ {
if (!result)
result = true;
File.WriteAllLines(markdownFile.File, lines); File.WriteAllLines(markdownFile.File, lines);
result += 1;
} }
} }
if (!result) if (result == 0)
{ {
foreach ((MarkdownFile markdownFile, string[] lines) in collection) foreach ((MarkdownFile markdownFile, string[] lines) in collection)
{ {
@ -563,13 +611,12 @@ internal static partial class HelperMarkdown
h1 = lines[markdownFile.LineNumber.H1.Value]; h1 = lines[markdownFile.LineNumber.H1.Value];
if (h1.Length > 2) if (h1.Length > 2)
{ {
h1Check = $"# {h1[2..].Humanize(LetterCasing.Title)}"; h1Check = $"# {h1[2..]}";
if (h1Check.Length == h1.Length && h1Check != h1) if (h1Check.Length == h1.Length && h1Check != h1)
{ {
lines[markdownFile.LineNumber.H1.Value] = h1Check; lines[markdownFile.LineNumber.H1.Value] = h1Check;
if (!result)
result = true;
File.WriteAllLines(markdownFile.File, lines); File.WriteAllLines(markdownFile.File, lines);
result += 1;
} }
} }
} }
@ -581,29 +628,79 @@ internal static partial class HelperMarkdown
checkName = Path.Combine(markdownFile.Directory, checkFileName); checkName = Path.Combine(markdownFile.Directory, checkFileName);
if (checkName == markdownFile.File) if (checkName == markdownFile.File)
continue; continue;
if (!result)
result = true;
File.Move(markdownFile.File, checkName); File.Move(markdownFile.File, checkName);
result += 1;
} }
} }
return result; return result;
} }
internal static void MarkdownWikiLinkVerification(Models.AppSettings appSettings, string argsZero) private static Record GetRecord(List<string> args)
{ {
string fullPath = Path.GetFullPath(argsZero); Record result;
string? startAt = null;
string? destination = null;
for (int i = 1; i < args.Count; i++)
{
if (args[i].Length == 2 && i + 1 < args.Count)
{
if (args[i][1] == 's')
startAt = Path.GetFullPath(args[i + 1]);
else if (args[i][1] == 'd')
destination = Path.GetFullPath(args[i + 1]);
i++;
}
}
if (startAt is not null && !Directory.Exists(startAt))
throw new Exception($"Start at directory <{startAt}> doesn't exist!");
if (destination is not null)
{
string? root = Path.GetPathRoot(destination);
if (root is null || !Directory.Exists(root))
throw new NotSupportedException($"This method requires a valid -d path <{root}>!");
if (!Directory.Exists(destination))
_ = Directory.CreateDirectory(destination);
}
result = new(Path.GetFullPath(args.First()), startAt, destination);
return result;
}
internal static void MarkdownWikiLinkVerification(AppSettings appSettings, ILogger<Worker> logger, List<string> args)
{
int updated;
Record record = GetRecord(args);
List<(MarkdownFile MarkdownFile, string[] Lines)> collection; List<(MarkdownFile MarkdownFile, string[] Lines)> collection;
collection = GetCollection(appSettings, GetFiles(appSettings, fullPath)); collection = GetCollection(appSettings, GetFiles(appSettings, record));
if (SetFrontMatterAndH1(appSettings, collection)) updated = SetFrontMatterAndH1(appSettings, collection);
collection = GetCollection(appSettings, GetFiles(appSettings, fullPath)); if (updated != 0)
if (CircularReference(collection)) {
collection = GetCollection(appSettings, GetFiles(appSettings, fullPath)); collection = GetCollection(appSettings, GetFiles(appSettings, record));
if (FindReplace(collection)) logger.LogInformation("{updated} Markdown file(s) were updated", updated);
collection = GetCollection(appSettings, GetFiles(appSettings, fullPath)); }
if (ConvertToRelativePath(collection)) updated = CircularReference(logger, collection);
collection = GetCollection(appSettings, GetFiles(appSettings, fullPath)); if (updated != 0)
if (ConvertFileToSlugName(collection)) {
collection = GetCollection(appSettings, GetFiles(appSettings, fullPath)); collection = GetCollection(appSettings, GetFiles(appSettings, record));
logger.LogInformation("{updated} Markdown file(s) were updated", updated);
}
updated = FindReplace(collection);
if (updated != 0)
{
collection = GetCollection(appSettings, GetFiles(appSettings, record));
logger.LogInformation("{updated} Markdown file(s) were updated", updated);
}
updated = ConvertToRelativePath(appSettings, logger, record, collection);
if (updated != 0)
{
collection = GetCollection(appSettings, GetFiles(appSettings, record));
logger.LogInformation("{updated} Markdown file(s) were updated", updated);
}
updated = ConvertFileToSlugName(appSettings, logger, record, collection);
if (updated != 0)
{
collection = GetCollection(appSettings, GetFiles(appSettings, record));
logger.LogInformation("{updated} Markdown file(s) were updated", updated);
}
string directory = Path.Combine(Environment.CurrentDirectory, ".vscode"); string directory = Path.Combine(Environment.CurrentDirectory, ".vscode");
if (!Directory.Exists(directory)) if (!Directory.Exists(directory))
{ {
@ -618,4 +715,91 @@ internal static partial class HelperMarkdown
} }
} }
private static List<(string, string, string[])> GetWithLinksForHugo(AppSettings appSettings, Record record)
{
List<(string, string, string[])> results = new();
string file;
string line;
string fileName;
string? directory;
string[] segmentsA;
string[] segmentsB;
string[] segmentsC;
string relativeFile;
string segmentsALast;
string segmentsBFirst;
int sourceDirectoryLength = record.Source.Length;
List<(MarkdownFile MarkdownFile, string[] Lines)> collection = GetCollection(appSettings, GetFiles(appSettings, record));
foreach ((MarkdownFile markdownFile, string[] lines) in collection)
{
if (record.Destination is null)
continue;
if (markdownFile.File.Length < sourceDirectoryLength)
continue;
if (!File.Exists(markdownFile.File))
continue;
fileName = $"{record.Destination}{markdownFile.File[sourceDirectoryLength..]}";
directory = Path.GetDirectoryName(fileName);
if (string.IsNullOrEmpty(directory))
continue;
for (int i = 0; i < lines.Length; i++)
{
segmentsA = lines[i].Split("](");
if (segmentsA.Length != 2)
continue;
segmentsALast = segmentsA.Last();
if (segmentsALast.StartsWith("http:") || segmentsALast.StartsWith("https:") || segmentsALast.StartsWith("rdp:") || segmentsALast.StartsWith("onenote:"))
continue;
segmentsB = segmentsALast.Split(")");
if (segmentsB.Length != 2)
continue;
segmentsBFirst = segmentsB.First();
segmentsC = segmentsA.First().Split('[');
file = Path.GetFullPath(Path.Combine(markdownFile.Directory, segmentsBFirst));
relativeFile = Path.GetRelativePath(record.Source, file).Replace('\\', '/');
line = $"{segmentsC.First()}[[{relativeFile}]]{segmentsB.Last()}";
if (lines[i] == line)
throw new NotSupportedException($"Line {i} shouldn't match with {line}");
lines[i] = line;
}
results.Add((directory, fileName, lines));
}
return results;
}
private static List<string> GetDistinct(List<(string, string, string[])> collection)
{
List<string> results = new();
foreach ((string directory, _, _) in collection)
{
if (results.Contains(directory))
continue;
results.Add(directory);
}
return results;
}
private static void CreateMissingDirectories(List<string> directories)
{
foreach (string directory in directories)
{
if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory);
}
}
internal static void MarkdownConvertLinksForHugo(AppSettings appSettings, ILogger<Worker> logger, List<string> args)
{
Record record = GetRecord(args);
if (string.IsNullOrEmpty(record.Destination))
throw new NotSupportedException("This method requires a -d path!");
List<(string, string, string[])> collection = GetWithLinksForHugo(appSettings, record);
if (!collection.Any())
logger.LogInformation("No files?");
List<string> distinct = GetDistinct(collection);
CreateMissingDirectories(distinct);
foreach ((_, string file, string[] lines) in collection)
File.WriteAllLines(file, lines);
}
} }

View File

@ -41,6 +41,7 @@ public class Worker : BackgroundService
ConsoleKey.R, ConsoleKey.R,
ConsoleKey.S, ConsoleKey.S,
ConsoleKey.T, ConsoleKey.T,
ConsoleKey.U,
ConsoleKey.Z, ConsoleKey.Z,
ConsoleKey.Delete ConsoleKey.Delete
}; };
@ -101,6 +102,7 @@ public class Worker : BackgroundService
_Logger.LogInformation("R) Rename to old, copy, delete old"); _Logger.LogInformation("R) Rename to old, copy, delete old");
_Logger.LogInformation("S) Set Date from Zip Entry"); _Logger.LogInformation("S) Set Date from Zip Entry");
_Logger.LogInformation("T) Too long rename"); _Logger.LogInformation("T) Too long rename");
_Logger.LogInformation("U) Links for Hugo");
_Logger.LogInformation("Z) Zip file(s) by date,"); _Logger.LogInformation("Z) Zip file(s) by date,");
_Logger.LogInformation("Delete) Delete empty directories,"); _Logger.LogInformation("Delete) Delete empty directories,");
consoleKey = Console.ReadKey().Key; consoleKey = Console.ReadKey().Key;
@ -131,7 +133,7 @@ public class Worker : BackgroundService
Helpers.HelperCreateNoteFiles.CreateNoteFiles(_Args[0]); Helpers.HelperCreateNoteFiles.CreateNoteFiles(_Args[0]);
break; break;
case ConsoleKey.M: case ConsoleKey.M:
Helpers.HelperMarkdown.MarkdownWikiLinkVerification(_AppSettings, _Args[0]); Helpers.HelperMarkdown.MarkdownWikiLinkVerification(_AppSettings, _Logger, _Args);
break; break;
case ConsoleKey.R: case ConsoleKey.R:
Helpers.HelperRenameToOldMoveDeleteOldMerge.RenameToOldMoveDeleteOld(_Logger, _Args[0]); Helpers.HelperRenameToOldMoveDeleteOldMerge.RenameToOldMoveDeleteOld(_Logger, _Args[0]);
@ -143,6 +145,9 @@ public class Worker : BackgroundService
Helpers.HelperTooLong.TooLong(_Args[0], delete: false); Helpers.HelperTooLong.TooLong(_Args[0], delete: false);
Helpers.HelperTooLong.TooLong(_Args[0], delete: true); Helpers.HelperTooLong.TooLong(_Args[0], delete: true);
break; break;
case ConsoleKey.U:
Helpers.HelperMarkdown.MarkdownConvertLinksForHugo(_AppSettings, _Logger, _Args);
break;
case ConsoleKey.Z: case ConsoleKey.Z:
Helpers.HelperZipFilesByDate.ZipFilesByDate(_Logger, _Args[0]); Helpers.HelperZipFilesByDate.ZipFilesByDate(_Logger, _Args[0]);
break; break;

View File

@ -2,15 +2,8 @@
"scripts": { "scripts": {
"prettier.check": "prettier . --check", "prettier.check": "prettier . --check",
"prettier.write": "prettier . --write", "prettier.write": "prettier . --write",
"Alpha": "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "kanbn.board": "kanbn board",
"nuget-clear": "dotnet nuget locals all --clear", "kanbn.board.json": "kanbn board -j > .kanbn/board.json",
"build": "dotnet build --runtime win-x64 --self-contained",
"build-Package-Management": "dotnet build --runtime win-x64 --self-contained --source https://packagemanagement.eu.infineon.com:4430/api/v2/",
"build-nuget-And-Package-Management": "dotnet build --runtime win-x64 --self-contained --source https://api.nuget.org/v3/index.json --source https://packagemanagement.eu.infineon.com:4430/api/v2/",
"build-All-Sources": "dotnet build --runtime win-x64 --self-contained --source https://api.nuget.org/v3/index.json --source https://packagemanagement.eu.infineon.com:4430/api/v2/ --source https://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json --source http://192.168.0.73:5002/v3/index.json",
"dotnet-format": "dotnet format --report .vscode --verbosity detailed --severity warn",
"MSBuild": "\"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe\" /target:Build /restore:True /p:RestoreSources=https://api.nuget.org/v3/index.json%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json /DetailedSummary /ConsoleLoggerParameters:PerformanceSummary;ErrorsOnly; /property:Configuration=Debug;TargetFrameworkVersion=v4.8 File-Folder-Helper.csproj",
"pull": "git pull",
"garbage-collect": "git gc" "garbage-collect": "git gc"
}, },
"devDependencies": { "devDependencies": {