in traceabilitytool/program.cs [64:189]
public static void Main(string[] args)
{
bool inputDirValid = false;
bool outputDirValid = false;
bool buildCheck = false;
bool optionGUI = false;
// Command line interface can be enabled as a command line option
bool consoleEnabled = false;
exclusionDirs = new List<string>();
if (args.Length > 0)
{
for (int i = 0; i < args.Length; i++)
{
// Find the input directory paramter, which should follow the "-i" parameter
if (args[i].Equals("-i", StringComparison.OrdinalIgnoreCase) && (i < args.Length - 1))
{
inputDirValid = Directory.Exists(args[i + 1]);
if (inputDirValid)
inputDir = args[i + 1];
}
// Find the output directory parameter, which should follow the "-o" parameter
if (args[i].Equals("-o", StringComparison.OrdinalIgnoreCase) && (i < args.Length - 1))
{
outputDirValid = Directory.Exists(args[i + 1]);
if (outputDirValid)
{
outputDir = args[i + 1];
}
}
// The "GUI" option enables GUI mode of operation as opposed to command-line mode.
if (args[i].Equals("-GUI", StringComparison.OrdinalIgnoreCase))
optionGUI = true;
// The "CSV" option forces reports to be generated in the comma-separated values (CSV) format in addition to plain text reports.
if (args[i].Equals("-CSV", StringComparison.OrdinalIgnoreCase))
MainForm.outputCSV = true;
// The "BUILDCHECK" option forces reports to be generated in the comma-separated values (CSV) format in addition to plain text reports.
if (args[i].Equals("-BUILDCHECK", StringComparison.OrdinalIgnoreCase))
{
MainForm.buildCheck = true;
buildCheck = true;
}
if (args[i].Equals("-e", StringComparison.OrdinalIgnoreCase) && (i < args.Length - 1))
{
string[] dirs = args[i + 1].Split(';');
foreach (string d in dirs)
{
string backSlashDir = d.Replace("/", "\\");
if (!Directory.Exists(backSlashDir))
{
Console.WriteLine($"Invalid exclusion directory specified: {d}");
}
else
{
exclusionDirs.Add(backSlashDir);
}
}
}
}
// parse out incompatible options
if ((buildCheck && (optionGUI || MainForm.outputCSV || outputDirValid)) ||
(!buildCheck && (!outputDirValid && !optionGUI)))
{
Usage();
exitCode = 1;
}
if (!optionGUI && !inputDirValid)
{
Usage();
exitCode = 1;
}
}
else
{
//Default to enable console if Usage is wrong.
consoleEnabled = enableConsole();
Usage();
exitCode = 1;
}
if (exitCode == 0)
{
if (!optionGUI)
{
consoleEnabled = enableConsole();
}
if (optionGUI)
{
// GUI enabled
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
else
{
// The minimum required parameters were correctly specified. Run the reports in CLI mode
exitCode = ReportGenerator.GenerateReport(inputDir, outputDir, exclusionDirs.ToArray(), null);
Console.WriteLine();
if (outputDirValid)
{
Console.WriteLine("Reports have been generated in " + outputDir);
}
}
}
if (consoleEnabled)
FreeConsole();
System.Environment.Exit(exitCode);
}