Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            string configurationImportFile = null;

            for (int i = 0; i < args.Length; i++)
            {
                switch (args[i])
                {
                case "-import":
                case "-i":
                    configurationImportFile = args[++i];
                    break;

                case "-config":
                case "-c":
                    ConfigurationFile = args[++i];
                    break;
                }
            }

            using (CancellationTokenSource cancellationSource = new CancellationTokenSource())
                using (Starwatch = new StarboundHandler(Configuration.FromFile(ConfigurationFile)))
                {
                    //Import the previous starbound configuration.
                    if (!string.IsNullOrEmpty(configurationImportFile))
                    {
                        Console.WriteLine("Preparing Initializer...");
                        Starwatch.Initialize().Wait();

                        Console.WriteLine("Importing...");
                        Starwatch.Server.Configurator.ImportSettingsAsync(configurationImportFile).Wait();

                        Console.WriteLine("Deinitializing...");
                        Starwatch.Deinitialize().Wait();

                        Console.WriteLine("Done!");
                        return;
                    }

                    //Regular Starwatch instance
                    var context = Starwatch.Run(cancellationSource.Token).ConfigureAwait(false);

                    //infinite loop to proces lines
                    bool process = true;
                    while (process && !context.GetAwaiter().IsCompleted)
                    {
                        string line = Console.ReadLine();
                        switch (line)
                        {
                        case "stop":
                        case "exit":
                        case "abort":
                        case "quit":
                            Console.WriteLine("Cancelling Token...");
                            Starwatch.KeepAlive = false;
                            Starwatch?.Server?.Terminate("CLI Stop").Wait();
                            cancellationSource.Cancel();
                            process = false;
                            break;

                        case "restart":
                            Starwatch?.Server.Terminate("CLI Restart...");
                            break;
                        }
                    }

                    //We exited, so lets close things down
                    Console.WriteLine("Done!");
                }
        }