Merge MVP features #1

Merged
dominic merged 16 commits from prototype into master 2026-04-24 18:48:16 +00:00
2 changed files with 32 additions and 14 deletions
Showing only changes of commit 13e375c145 - Show all commits

View File

@ -1,5 +1,7 @@
using System;
using System.Xml;
using System.Xml.Linq;
using CommandLine;
using Sprache;
using XNeedle.Parser;
using XNeedle.Parser.Elements;
@ -9,24 +11,39 @@ namespace XNeedle
{
class Program
{
static void Main()
public class Options
{
var input = "$(\"//Device/Type[@ProductCode='#x0B583052' and @RevisionNo='#x00110000']\")";
[Value(0, MetaName = "xn", Required = true, HelpText = "XN transformation definition")]
public string XnDefinition { get; set; }
var rule = (Rule)XnParser.RuleObject.Parse(input);
[Option('i', "input", HelpText = "Input XML file", Required = true)]
public string Input { get; set; }
XmlDocument doc = new XmlDocument();
doc.Load("ELx9xx.xml");
[Option('o', "output", HelpText = "Output XML file", Required = true)]
public string Output { get; set; }
rule.Transform(doc);
[Option('v', "verbose", Required = false, HelpText = "Set output to verbose messages.")]
public bool Verbose { get; set; }
}
static void Main(string[] args)
{
CommandLine.Parser.Default.ParseArguments<Options>(args)
.WithParsed(RunOptions)
.WithNotParsed(HandleParseError);
}
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create("El9xxFi.xml", settings);
static void RunOptions(Options opts)
{
var masterRule = (Rule)XnParser.RuleObject.Parse(File.ReadAllText(opts.XnDefinition));
var doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(opts.Input);
masterRule.Transform(doc);
doc.Save(opts.Output);
doc.WriteContentTo(writer);
Console.WriteLine($"Applied \"{opts.XnDefinition}\" to \"{opts.Input}\" and saved result to \"{opts.Output}\"");
}
Console.WriteLine("Done.");
}
static void HandleParseError(IEnumerable<Error> errs) {}
}
}

View File

@ -8,6 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Sprache" Version="3.0.0-develop-00049" />
<PackageReference Include="System.IO.Hashing" Version="10.0.0" />
</ItemGroup>