RenameFunction.cs 809 B

1234567891011121314151617181920212223242526
  1. namespace Lua.Standard.OperatingSystem;
  2. public sealed class RenameFunction : LuaFunction
  3. {
  4. public override string Name => "rename";
  5. public static readonly RenameFunction Instance = new();
  6. protected override ValueTask<int> InvokeAsyncCore(LuaFunctionExecutionContext context, Memory<LuaValue> buffer, CancellationToken cancellationToken)
  7. {
  8. var oldName = context.GetArgument<string>(0);
  9. var newName = context.GetArgument<string>(1);
  10. try
  11. {
  12. File.Move(oldName, newName);
  13. buffer.Span[0] = true;
  14. return new(1);
  15. }
  16. catch(IOException ex)
  17. {
  18. buffer.Span[0] = LuaValue.Nil;
  19. buffer.Span[1] = ex.Message;
  20. buffer.Span[2] = ex.HResult;
  21. return new(3);
  22. }
  23. }
  24. }