VSCodeTask

Download SSL Certificates
Sort Subtasks of Markdown files
Test BioRad
EAF CopyDirectories
json to Markdown
Sort Day 2024 Q2
GitRemoteRemove
Handle directoryInfo.LinkTarget better
Remove StartAt
Handle directoryInfo.LinkTarget
This commit is contained in:
2024-08-02 13:32:23 -07:00
parent 1cd20fa08b
commit 2923e86a94
23 changed files with 1211 additions and 731 deletions

View File

@ -43,24 +43,78 @@ internal static class HelperGit
return result.Output;
}
private static List<string> GetOthersModifiedAndDeletedExcludingStandardFilesAsList(string repositoryDirectory, bool usePathCombine, CancellationToken cancellationToken)
{
List<string> results = [];
Task<string> task = RunAsync("ls-files --others --modified --deleted --exclude-standard", repositoryDirectory, cancellationToken);
task.Wait(cancellationToken);
string[] files = task.Result.Split("\r\n");
foreach (string file in files)
{
if (!usePathCombine)
results.Add(file);
else
results.Add(Path.GetFullPath(Path.Combine(repositoryDirectory, file)));
}
return results;
}
internal static ReadOnlyCollection<string> GetOthersModifiedAndDeletedExcludingStandardFiles(string repositoryDirectory, bool usePathCombine, CancellationToken cancellationToken)
{
List<string> results = [];
List<string> relativePathFiles;
DirectoryInfo directoryInfo;
bool usePathCombineInner = false;
string checkDirectory = Path.Combine(repositoryDirectory, ".git");
if (Directory.Exists(checkDirectory))
results.AddRange(GetOthersModifiedAndDeletedExcludingStandardFilesAsList(repositoryDirectory, usePathCombine, cancellationToken));
string[] subdirectories = Directory.GetDirectories(repositoryDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string subdirectory in subdirectories)
{
Task<string> task = RunAsync($"ls-files --others --modified --deleted --exclude-standard", repositoryDirectory, cancellationToken);
task.Wait(cancellationToken);
string[] files = task.Result.Split("\r\n");
foreach (string file in files)
{
if (!usePathCombine)
results.Add(file);
else
results.Add(Path.GetFullPath(Path.Combine(repositoryDirectory, file)));
}
directoryInfo = new(subdirectory);
if (directoryInfo.LinkTarget is null)
continue;
checkDirectory = Path.Combine(directoryInfo.LinkTarget, ".git");
if (!Directory.Exists(checkDirectory))
continue;
relativePathFiles = GetOthersModifiedAndDeletedExcludingStandardFilesAsList(directoryInfo.LinkTarget, usePathCombineInner, cancellationToken);
foreach (string relativePathFile in relativePathFiles)
results.Add(Path.GetFullPath(Path.Combine(subdirectory, relativePathFile)));
}
return new(results);
}
internal static ReadOnlyCollection<string> RemoteRemove(string repositoryDirectory, string name, CancellationToken cancellationToken)
{
List<string> results = [];
Task<string> task = RunAsync($"remote rm {name}", repositoryDirectory, cancellationToken);
task.Wait(cancellationToken);
string[] lines = task.Result.Split("\r\n");
foreach (string line in lines)
results.Add(line);
return new(results);
}
internal static ReadOnlyCollection<string> RemoteAdd(string repositoryDirectory, string name, string url, CancellationToken cancellationToken)
{
List<string> results = [];
Task<string> task = RunAsync($"remote add {name} {url}", repositoryDirectory, cancellationToken);
task.Wait(cancellationToken);
string[] lines = task.Result.Split("\r\n");
foreach (string line in lines)
results.Add(line);
return new(results);
}
internal static ReadOnlyCollection<string> PushBranch(string repositoryDirectory, string remote, string name, CancellationToken cancellationToken)
{
List<string> results = [];
Task<string> task = RunAsync($"push {remote} {name}", repositoryDirectory, cancellationToken);
task.Wait(cancellationToken);
string[] lines = task.Result.Split("\r\n");
foreach (string line in lines)
results.Add(line);
return new(results);
}
}

View File

@ -160,7 +160,7 @@ internal static partial class HelperKanbanMetadata
results.Add(lines[i]);
}
}
results.Add($"status: \"{record.GroupCount}-{record.Group}\"");
results.Add($"status: {record.GroupCount}-{record.Group}");
results.Add("```");
results.Add(string.Empty);
}
@ -201,7 +201,7 @@ internal static partial class HelperKanbanMetadata
(lines, lineNumber) = HelperMarkdown.GetStatusAndFrontMatterYamlEndLineNumbers(record.FileInfo);
if (lines.Count == 0)
continue;
statusLine = $"status: \"{record.GroupCount}-{record.Group}\"";
statusLine = $"status: {record.GroupCount}-{record.Group}";
paramCase = lineNumber.H1 is null ? null : GetParamCase(lines[lineNumber.H1.Value]);
match = lineNumber.H1 is null || paramCase is null ? null : Path.GetFileNameWithoutExtension(record.FileInfo.Name) == paramCase;
if (lineNumber.FrontMatterYamlEnd is null)

File diff suppressed because it is too large Load Diff