Browse Source

Add: os.remove

AnnulusGames 1 year ago
parent
commit
8a6e0713f7

+ 2 - 1
src/Lua/Standard/OpenLibExtensions.cs

@@ -68,7 +68,7 @@ public static class OpenLibExtensions
     static readonly LuaFunction[] tableFunctions = [
         PackFunction.Instance,
         UnpackFunction.Instance,
-        RemoveFunction.Instance,
+        Table.RemoveFunction.Instance,
         ConcatFunction.Instance,
         InsertFunction.Instance,
         SortFunction.Instance,
@@ -90,6 +90,7 @@ public static class OpenLibExtensions
         DiffTimeFunction.Instance,
         ExitFunction.Instance,
         GetEnvFunction.Instance,
+        OperatingSystem.RemoveFunction.Instance,
         SetLocaleFunction.Instance,
         TimeFunction.Instance,
     ];

+ 25 - 0
src/Lua/Standard/OperatingSystem/RemoveFunction.cs

@@ -0,0 +1,25 @@
+namespace Lua.Standard.OperatingSystem;
+
+public sealed class RemoveFunction : LuaFunction
+{
+    public override string Name => "remove";
+    public static readonly RemoveFunction Instance = new();
+
+    protected override ValueTask<int> InvokeAsyncCore(LuaFunctionExecutionContext context, Memory<LuaValue> buffer, CancellationToken cancellationToken)
+    {
+        var fileName = context.GetArgument<string>(0);
+        try
+        {
+            File.Delete(fileName);
+            buffer.Span[0] = true;
+            return new(1);
+        }
+        catch(IOException ex)
+        {
+            buffer.Span[0] = LuaValue.Nil;
+            buffer.Span[1] = ex.Message;
+            buffer.Span[2] = ex.HResult;
+            return new(3);
+        }
+    }
+}