using System.Collections.Generic; using System.Text.RegularExpressions; namespace SourceGit.Commands { public partial class QueryRevisionObjects : Command { [GeneratedRegex(@"^\d+\s+(\w+)\s+([0-9a-f]+)\s+(.*)$")] private static partial Regex REG_FORMAT(); private List objects = new List(); public QueryRevisionObjects(string repo, string sha) { WorkingDirectory = repo; Context = repo; Args = $"ls-tree -r {sha}"; } public List Result() { Exec(); return objects; } protected override void OnReadline(string line) { var match = REG_FORMAT().Match(line); if (!match.Success) return; var obj = new Models.Object(); obj.SHA = match.Groups[2].Value; obj.Type = Models.ObjectType.Blob; obj.Path = match.Groups[3].Value; switch (match.Groups[1].Value) { case "blob": obj.Type = Models.ObjectType.Blob; break; case "tree": obj.Type = Models.ObjectType.Tree; break; case "tag": obj.Type = Models.ObjectType.Tag; break; case "commit": obj.Type = Models.ObjectType.Commit; break; } objects.Add(obj); } } }