Esempio n. 1
0
        private static async Task <int> MainAsync(string[] arguments)
        {
            var signal = new AutoResetEvent(false);

            var input = arguments.Length > 0 ? arguments[0] : "redis";

            arguments = arguments.Length > 0 ? arguments.Skip(1).ToArray() : arguments;

            if (!Commands.TryGetValue(input, out var type))
            {
                Console.WriteLine($"Invalid command: {input}");

                return(-1);
            }

            var command = (ICommand)Activator.CreateInstance(type);

            command.Done += (sender, args) => signal.Set();
            OnExit.Register(() => signal.Set());

            try
            {
                await command.Start(arguments);

                signal.WaitOne();

                await command.Stop();
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
                Console.WriteLine(exception.StackTrace);

                return(-1);
            }

            return(0);
        }