Commit: 6e190e4
Parent: 4319a5d

Open note after creation

Mårten Åsberg committed on 2026-07-18 at 19:18
src/NewNote.cs +25 -7
diff --git a/src/NewNote.cs b/src/NewNote.cs
index d271e77..860fde1 100644
@@ -11,7 +11,8 @@ using YamlDotNet.Serialization.Converters;
namespace NotesCli;
[Cmdlet(VerbsCommon.New, "Note")]
[Cmdlet(VerbsCommon.New, "Note", SupportsShouldProcess = true)]
[Alias("nn")]
public sealed class NewNote : PSCmdlet
{
private static readonly MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder()
@@ -22,6 +23,9 @@ public sealed class NewNote : PSCmdlet
.WithTypeConverter(new DateOnlyConverter(formats: "yyyy-MM-dd"))
.Build();
[Parameter(HelpMessage = "Opens the newly created note for editing.")]
public SwitchParameter Open { get; set; } = true;
protected override void BeginProcessing()
{
var now = DateTimeOffset.Now;
@@ -29,19 +33,33 @@ public sealed class NewNote : PSCmdlet
var frontmatter = GetPreviousFrontmatter() ?? [];
frontmatter["date"] = DateOnly.FromDateTime(now.DateTime);
InvokeProvider.Item.New(
path: ".",
name: $"{now:yyyy-MM-ddTHHmmss}.md",
itemTypeName: "file",
content: $"""
var content = $"""
---
{yamlSerializer.Serialize(frontmatter).TrimEnd()}
---
"""
""";
var createdItems = InvokeProvider.Item.New(
path: ".",
name: $"{now:yyyy-MM-ddTHHmmss}.md",
itemTypeName: "file",
content: content
);
if (createdItems is not [{ BaseObject: FileInfo createdItem }])
{
return;
}
if (Open && ShouldProcess(createdItem.FullName, "Open"))
{
InvokeCommand.InvokeScript(
$"{GetVariableValue("Env:EDITOR")} {createdItem.FullName}:{content.Count(c => c is '\n')}"
);
}
WriteObject(createdItem);
}
private Dictionary<string, object>? GetPreviousFrontmatter()