forked from x97mdr/pickles
-
Notifications
You must be signed in to change notification settings - Fork 162
/
CommandLineArgumentParser.cs
80 lines (67 loc) · 2.5 KB
/
CommandLineArgumentParser.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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#region License
/*
Copyright [2011] [Jeffrey Cameron]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NDesk.Options;
using System.IO;
namespace Pickles
{
public class CommandLineArgumentParser
{
private readonly OptionSet options;
private string featureDirectory;
private string outputDirectory;
private bool versionRequested;
private bool helpRequested;
public CommandLineArgumentParser()
{
this.options = new OptionSet
{
{ "f|feature-directory=", "directory to start scanning recursively for features", v => featureDirectory = v },
{ "o|output-directory=", "directory where output files will be placed", v => outputDirectory = v },
{ "v|version", v => versionRequested = v != null },
{ "h|?|help", v => helpRequested = v != null }
};
}
private void DisplayVersion(TextWriter stdout)
{
stdout.WriteLine("Pickles version {0}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
}
private void DisplayHelp(TextWriter stdout)
{
DisplayVersion(stdout);
this.options.WriteOptionDescriptions(stdout);
}
public bool Parse(string[] args, Configuration configuration, TextWriter stdout)
{
var extra = this.options.Parse(args);
if (versionRequested)
{
DisplayVersion(stdout);
return false;
}
else if (helpRequested)
{
DisplayHelp(stdout);
return false;
}
configuration.FeatureFolder = new System.IO.DirectoryInfo(this.featureDirectory);
configuration.OutputFolder = new System.IO.DirectoryInfo(this.outputDirectory);
return true;
}
}
}