Skip to content

Commit

Permalink
Document bare minimum of CLI flag parsing behaviour
Browse files Browse the repository at this point in the history
  • Loading branch information
YoshiRulz committed Jul 7, 2024
1 parent 5e5f577 commit d515b1b
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/BizHawk.Client.Common/ArgParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,12 @@ public static void ParseArguments(out ParsedCLIFlags parsed, string[] args)
}
else if (argDowncased.StartsWithOrdinal("--dump-type="))
{
// ignored unless `--dump-name` also passed
cmdDumpType = argDowncased.Substring(argDowncased.IndexOf('=') + 1);
}
else if (argDowncased.StartsWithOrdinal("--dump-frames="))
{
// comma-separated list of integers, indices of frames which should be included in the A/V dump (encoding)
string list = argDowncased.Substring(argDowncased.IndexOf('=') + 1);
currAviWriterFrameList = new();
currAviWriterFrameList.AddRange(list.Split(',').Select(int.Parse));
Expand All @@ -94,6 +96,7 @@ public static void ParseArguments(out ParsedCLIFlags parsed, string[] args)
}
else if (argDowncased.StartsWithOrdinal("--dump-name="))
{
// ignored unless `--dump-type` also passed
cmdDumpName = arg.Substring(arg.IndexOf('=') + 1);
}
else if (argDowncased.StartsWithOrdinal("--dump-length="))
Expand All @@ -117,6 +120,7 @@ public static void ParseArguments(out ParsedCLIFlags parsed, string[] args)
else if (argDowncased.StartsWithOrdinal("--lua="))
{
luaScript = arg.Substring(arg.IndexOf('=') + 1);
// implies `--luaconsole`
luaConsole = true;
}
else if (argDowncased.StartsWithOrdinal("--luaconsole"))
Expand All @@ -125,15 +129,18 @@ public static void ParseArguments(out ParsedCLIFlags parsed, string[] args)
}
else if (argDowncased.StartsWithOrdinal("--socket_port="))
{
// must be paired with `--socket_ip`
var port = ushort.TryParse(arg.Substring(14), out var i1) ? i1 : (ushort) 0;
if (port > 0) socketPort = port;
}
else if (argDowncased.StartsWithOrdinal("--socket_ip="))
{
// must be paired with `--socket_port`
socketIP = argDowncased.Substring(argDowncased.IndexOf('=') + 1);
}
else if (argDowncased.StartsWithOrdinal("--socket_udp"))
{
// ignored unless `--socket_ip --socket_port` also passed
socketProtocol = ProtocolType.Udp;
}
else if (argDowncased.StartsWithOrdinal("--mmf="))
Expand All @@ -150,6 +157,8 @@ public static void ParseArguments(out ParsedCLIFlags parsed, string[] args)
}
else if (argDowncased.StartsWithOrdinal("--audiosync="))
{
// `true` is the only truthy value, all else falsey
// if not set, uses remembered state from config
audiosync = argDowncased.Substring(argDowncased.IndexOf('=') + 1) == "true";
}
else if (argDowncased.StartsWithOrdinal("--open-ext-tool-dll="))
Expand All @@ -161,6 +170,10 @@ public static void ParseArguments(out ParsedCLIFlags parsed, string[] args)
}
else if (argDowncased.StartsWithOrdinal("--userdata="))
{
// pairs in the format `k1:v1;k2:v2` (mind your shell escape sequences)
// if the value is `true`/`false` it's interpreted as a boolean,
// if it's a valid 32-bit signed integer e.g. `-1234` it's interpreted as such, if it's a valid 32-bit float e.g. `12.34` it's interpreted as such,
// else it's interpreted as a string
userdataUnparsedPairs = new();
foreach (var s in arg.Substring(11).Split(';'))
{
Expand Down

0 comments on commit d515b1b

Please sign in to comment.