/
Program.cs
54 lines (46 loc) · 1.91 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// © Xavalon. All rights reserved.
using CommandLine;
using System;
using System.IO;
namespace Xavalon.XamlStyler.Console
{
public sealed partial class Program
{
public static int Main(string[] args)
{
var writer = new StringWriter();
var parser = new CommandLine.Parser(_ => _.HelpWriter = writer);
ParserResult<CommandLineOptions> result = parser.ParseArguments<CommandLineOptions>(args);
result.WithNotParsed(_ =>
{
System.Console.WriteLine(writer.ToString());
Environment.Exit(1);
})
.WithParsed(options =>
{
if (options.LogLevel >= LogLevel.Debug)
{
System.Console.WriteLine($"File Parameter: '{options.File}'");
System.Console.WriteLine($"File Count: {options.File?.Count ?? -1}");
System.Console.WriteLine($"File Directory: '{options.Directory}'");
}
bool isFileOptionSpecified = (options.File?.Count ?? 0) != 0;
bool isDirectoryOptionSpecified = !String.IsNullOrEmpty(options.Directory);
if (isFileOptionSpecified ^ isDirectoryOptionSpecified)
{
var xamlStylerConsole = new XamlStylerConsole(options);
xamlStylerConsole.Process(isFileOptionSpecified ? ProcessType.File : ProcessType.Directory);
}
else
{
string errorString = (isFileOptionSpecified && isDirectoryOptionSpecified)
? "Cannot specify both file(s) and directory"
: "Must specify file(s) or directory";
System.Console.WriteLine($"\nError: {errorString}\n");
Environment.Exit(1);
}
});
return 0;
}
}
}