Added some commands
parent
aa6b3c9d9e
commit
8c52025470
132
Test/Program.cs
132
Test/Program.cs
|
@ -29,6 +29,100 @@ namespace Test
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static IEnumerable<string> ParseInput(string input)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
bool openString = false;
|
||||||
|
foreach (var c in input)
|
||||||
|
{
|
||||||
|
if (char.IsWhiteSpace(c))
|
||||||
|
{
|
||||||
|
if (!openString)
|
||||||
|
{
|
||||||
|
if (sb.ToString() != "")
|
||||||
|
{
|
||||||
|
yield return sb.ToString();
|
||||||
|
}
|
||||||
|
sb.Clear();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c == '"')
|
||||||
|
{
|
||||||
|
if (sb.ToString() != "")
|
||||||
|
{
|
||||||
|
yield return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.Clear();
|
||||||
|
|
||||||
|
openString = !openString;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sb.ToString() != "")
|
||||||
|
{
|
||||||
|
yield return sb.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Dictionary<string, Action<string[]>> commands = new Dictionary<string, Action<string[]>>();
|
||||||
|
|
||||||
|
#region Commands
|
||||||
|
static void Help(string[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Commands:");
|
||||||
|
foreach (var kvp in commands)
|
||||||
|
{
|
||||||
|
Console.WriteLine(" - {0}", kvp.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Mount(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 3)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Usage: mount <archive> <mntpoint> <append>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
bool append;
|
||||||
|
if (!bool.TryParse(args[2], out append))
|
||||||
|
{
|
||||||
|
Console.WriteLine("append can only be true or false");
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysFS.PhysFS.Mount(args[0], args[1], append);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Enumerate(string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length < 1)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Usage: enumerate/ls <dir>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var f in PhysFS.PhysFS.EnumerateFiles(args[0]))
|
||||||
|
{
|
||||||
|
Console.WriteLine(" - {0}", f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void GetLastError(string[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine(PhysFS.PhysFS.GetLastError());
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -50,10 +144,46 @@ namespace Test
|
||||||
PrintSupportedArchives();
|
PrintSupportedArchives();
|
||||||
|
|
||||||
Console.WriteLine("Type 'help' for a list of commands");
|
Console.WriteLine("Type 'help' for a list of commands");
|
||||||
while(true)
|
|
||||||
|
commands.Add("help", Help);
|
||||||
|
commands.Add("mount", Mount);
|
||||||
|
commands.Add("enumerate", Enumerate);
|
||||||
|
commands.Add("ls", Enumerate);
|
||||||
|
|
||||||
|
while (true)
|
||||||
{
|
{
|
||||||
Console.Write("> ");
|
Console.Write("> ");
|
||||||
var input = Console.ReadLine();
|
var input = Console.ReadLine();
|
||||||
|
var split = ParseInput(input);
|
||||||
|
if (split.Count() == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split.First() == "quit")
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Action<string[]> cmd;
|
||||||
|
if (commands.TryGetValue(split.First(), out cmd))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
cmd(split.Skip(1).ToArray());
|
||||||
|
Console.WriteLine("Done.");
|
||||||
|
}
|
||||||
|
catch (PhysFS.PhysFSException e)
|
||||||
|
{
|
||||||
|
Console.Error.WriteLine("ERROR: {0}", e.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.Error.WriteLine("Invalid command");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysFS.PhysFS.Deinit();
|
PhysFS.PhysFS.Deinit();
|
||||||
|
|
Loading…
Reference in New Issue