Public Access
Centralize summary frontmatter metadata
PR and Push Build/Test / build-and-test (push) Successful in 9m47s
PR and Push Build/Test / build-and-test (push) Successful in 9m47s
This commit is contained in:
@@ -101,13 +101,11 @@ public sealed class MeetingSummaryTools
|
||||
var summaryTitle = string.IsNullOrWhiteSpace(meetingNote.Frontmatter.Title)
|
||||
? title
|
||||
: meetingNote.Frontmatter.Title;
|
||||
var frontmatter = MeetingArtifactFrontmatterRenderer.Create(
|
||||
var frontmatter = await MeetingSummaryFrontmatterFactory.CreateAsync(
|
||||
artifacts,
|
||||
meetingNote,
|
||||
string.IsNullOrWhiteSpace(summaryTitle) ? "Meeting Summary" : summaryTitle,
|
||||
artifacts.SummaryPath);
|
||||
frontmatter.Attendees = await ResolveSummaryAttendeesAsync(meetingNote);
|
||||
frontmatter.Projects = ResolveSummaryProjects(meetingNote);
|
||||
CancellationToken.None);
|
||||
await File.WriteAllTextAsync(
|
||||
artifacts.SummaryPath,
|
||||
MeetingArtifactFrontmatterRenderer.Render(frontmatter, markdown));
|
||||
@@ -579,44 +577,6 @@ public sealed class MeetingSummaryTools
|
||||
.Replace(Path.AltDirectorySeparatorChar.ToString(), "/", StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
private async Task<List<string>?> ResolveSummaryAttendeesAsync(MeetingNote meetingNote)
|
||||
{
|
||||
var existingAttendees = await ReadExistingSummaryAttendeesAsync();
|
||||
if (existingAttendees is not null)
|
||||
{
|
||||
return existingAttendees;
|
||||
}
|
||||
|
||||
return meetingNote.Frontmatter.Attendees.Count == 0
|
||||
? null
|
||||
: meetingNote.Frontmatter.Attendees.ToList();
|
||||
}
|
||||
|
||||
private static List<string>? ResolveSummaryProjects(MeetingNote meetingNote)
|
||||
{
|
||||
return meetingNote.Frontmatter.Projects.Count == 0
|
||||
? null
|
||||
: meetingNote.Frontmatter.Projects.ToList();
|
||||
}
|
||||
|
||||
private async Task<List<string>?> ReadExistingSummaryAttendeesAsync()
|
||||
{
|
||||
if (!File.Exists(artifacts.SummaryPath))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var content = await File.ReadAllTextAsync(artifacts.SummaryPath);
|
||||
var document = MarkdownDocumentParser.SplitOptional(content);
|
||||
if (!document.HasFrontmatter)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var yaml = YamlDeserializer.Deserialize<SummaryFrontmatterYaml>(document.Frontmatter);
|
||||
return yaml?.Attendees;
|
||||
}
|
||||
|
||||
private sealed record ProjectFileTarget(BoundMeetingProject Project, string Path);
|
||||
|
||||
private sealed record FileLineEditMode(
|
||||
@@ -679,12 +639,6 @@ public sealed class MeetingSummaryTools
|
||||
public string? Summary { get; set; }
|
||||
}
|
||||
|
||||
private sealed class SummaryFrontmatterYaml
|
||||
{
|
||||
[YamlDotNet.Serialization.YamlMember(Alias = "attendees")]
|
||||
public List<string>? Attendees { get; set; }
|
||||
}
|
||||
|
||||
private static DateTimeOffset? ParseDateTime(string? value)
|
||||
{
|
||||
return DateTimeOffset.TryParse(value, out var parsed)
|
||||
|
||||
Reference in New Issue
Block a user