using System.Linq; using System.Threading; using System.Threading.Tasks; using Robust.Shared.Console; using Robust.Shared.IoC; using Robust.Shared.Network; namespace Robust.Shared.ViewVariables.Commands; public abstract partial class ViewVariablesBaseCommand : LocalizedCommands { [Dependency] protected INetManager _netMan = default!; [Dependency] protected IViewVariablesManager _vvm = default!; public override async ValueTask GetCompletionAsync(IConsoleShell shell, string[] args, string argStr, CancellationToken cancel) { if (args.Length is 0 or > 1) return CompletionResult.Empty; var path = args[0]; if(_netMan.IsClient) { if(path.StartsWith("/c")) return CompletionResult.FromOptions( _vvm.ListPath(path[2..], new()) .Select(p => new CompletionOption($"/c{p}", null, CompletionOptionFlags.PartialCompletion))); return CompletionResult.FromOptions((await _vvm.ListRemotePath(path, new())) .Select(p => new CompletionOption(p, null, CompletionOptionFlags.PartialCompletion)) .Append(new CompletionOption("/c", "Client-side paths", CompletionOptionFlags.PartialCompletion))); } return CompletionResult.FromOptions( _vvm.ListPath(path, new()) .Select(p => new CompletionOption(p, null, CompletionOptionFlags.PartialCompletion))); } }