Skip to content

Commit

Permalink
Add HelpArgument
Browse files Browse the repository at this point in the history
  • Loading branch information
AliceFord committed Jul 24, 2023
1 parent a89f3fd commit ef4d8cb
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/CompilerCli/Argument/ArgumentParserFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ public static ArgumentParser Make()
new SortedSet<AbstractCliArgument>
{
new DefaultCliArgument(),
new NoWaitCliArgument()
new NoWaitCliArgument(),
new HelpArgument()
}
);
}
Expand Down
1 change: 1 addition & 0 deletions src/CompilerCli/Cli/CliArguments.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
public class CliArguments
{
public bool PauseOnFinish { get; set; } = true;
public bool HelpExit { get; set; } = false;
}
}
54 changes: 54 additions & 0 deletions src/CompilerCli/Cli/HelpArgument.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;

namespace CompilerCli.Cli
{
public class HelpArgument : AbstractCliArgument
{
public override void Parse(List<string> values, CliArguments cliArguments) {
if (values.Count != 0) {
throw new ArgumentException("Help flag cannot take any arguments");
}

cliArguments.HelpExit = true;
}

public override string GetSpecifier() {
return "--help";
}

public static string GetHelpMessage() {
return @"
usage: CompilerCli.exe [options] --config-file [config-file]
Compile the VATSIM-UK Sector File with the specified config file.
For more information visit: https://github.com/VATSIM-UK/sector-file-compiler
options:
--config-file Required. Takes a single argument. Path to a
compiler configuration JSON file. If this argument
is specified multiple times, then the compiler will
attempt to merge the configs together.
--check-config If set, only runs the configuration checking step
to ensure that the compiler config is correct.
--lint If set, only runs the configuration check and
linting steps.
--validate If set, only runs the configuration check, linting
and post-validation steps. Does not output files.
--skip-validation If set, the compiler will skip the post-parse
validation phase of compilation. If running in full
compilation mode, will still produce output.
--pretty If set, ""large"" elements such as SECTOR will have
an extra newline inserted between them, in order to
provide improved readability.
--strip-comments If set, any comments in the input will be removed.
If an empty line is leftover, it will be discarded.
--build-version Takes a single argument. Specifies the version of
the build to replace the {VERSION} token in the
input.
--no-wait Prompts the compiler not to wait for a keypress
when compilation has finished.
--help Display this help page.
";
}
}
}
5 changes: 5 additions & 0 deletions src/CompilerCli/CompilerCli.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ static int Main(string[] args)
return 1;
}

if (cliArguments.HelpExit) {
output.Write(HelpArgument.GetHelpMessage());
return 0;
}

int returnCode = SectorFileCompilerFactory.Create(
compilerArguments,
new List<IEventObserver>() { new ConsoleOutput(output) }
Expand Down

0 comments on commit ef4d8cb

Please sign in to comment.