namespace XWolf.Z
{
internal class Cmds
{
public enum CmdAction { HELP, CREATE, ADD, LIST, EXTRACT, FILE, DUMP }
public Cmds(string[] args)
{
if (args.Length == 0)
return;
if (args[0].Length > 1 && args[0][0] != '-')
throw new ArgumentException("Parameters unknown.");
Action = args[0][1..].ToLower().Trim() switch
{
"c" => CmdAction.CREATE,
"a" => CmdAction.ADD,
"l" => CmdAction.LIST,
"x" => CmdAction.EXTRACT,
"f" => CmdAction.FILE,
"d" => CmdAction.DUMP,
"h" or "?" => CmdAction.HELP,
_ => throw new ArgumentException($"Unknown action {args[0]}."),
};
if (Action == CmdAction.HELP)
if (args.Length > 1)
throw new ArgumentException($"Too many parameters for action {args[0]}.");
else return;
PakFile = args[1];
switch (Action)
{
case CmdAction.CREATE:
case CmdAction.DUMP:
From = args.Length > 2 ? args[2] : throw new ArgumentException($"Missing parameters for action {args[0]}.");
if (args.Length > 3)
throw new ArgumentException($"Too many parameters for action {args[0]}.");
break;
case CmdAction.ADD:
case CmdAction.FILE:
From = args.Length > 2 ? args[2] : throw new ArgumentException($"Missing parameters for action {args[0]}.");
To = args.Length > 3 ? args[3] : string.Empty;
if (args.Length > 4)
throw new ArgumentException($"Too many parameters for action {args[0]}.");
break;
case CmdAction.LIST:
break;
case CmdAction.EXTRACT:
To = args.Length > 2 ? args[2] : string.Empty;
if (args.Length > 3)
throw new ArgumentException($"Too many parameters for action {args[0]}.");
break;
}
}
public CmdAction Action { get; set; } = CmdAction.HELP;
public string PakFile { get; set; } = string.Empty;
public string From { get; set; } = string.Empty;
public string To { get; set; } = string.Empty;
}
}