namespace Ghost.Editor.Models; [AttributeUsage(AttributeTargets.Property)] internal sealed class ArgumentNameAttribute : Attribute { public string Name { get; } public ArgumentNameAttribute(string name) { Name = name; } } internal class LaunchArguments { [ArgumentName("project-path")] public string ProjectPath { get; set; } = string.Empty; [ArgumentName("project-name")] public string ProjectName { get; set; } = string.Empty; public bool IsValid() { return Directory.Exists(ProjectPath) && !string.IsNullOrWhiteSpace(ProjectName); } }