老九 3 years ago
parent
commit
bcc0556fd0
1 changed files with 31 additions and 24 deletions
  1. 31 24
      FastGithub/ServiceExtensions.cs

+ 31 - 24
FastGithub/ServiceExtensions.cs

@@ -56,26 +56,7 @@ namespace FastGithub
         public static void Run(this IHost host, bool singleton = true)
         {
             var logger = host.Services.GetRequiredService<ILoggerFactory>().CreateLogger(nameof(FastGithub));
-            if (TryGetCommand(out var cmd) && (OperatingSystem.IsWindows() || OperatingSystem.IsLinux()))
-            {
-                try
-                {
-                    if (OperatingSystem.IsWindows())
-                    {
-                        UseCommandAtWindows(cmd);
-                    }
-                    else if (OperatingSystem.IsLinux())
-                    {
-                        UseCommandAtLinux(cmd);
-                    }
-                    logger.LogInformation("服务操作成功");
-                }
-                catch (Exception ex)
-                {
-                    logger.LogError(ex.Message);
-                }
-            }
-            else
+            if (UseCommand(logger) == false)
             {
                 using var mutex = new Mutex(true, "Global\\FastGithub", out var firstInstance);
                 if (singleton == false || firstInstance)
@@ -90,14 +71,40 @@ namespace FastGithub
         }
 
         /// <summary>
-        /// 获取控制指
+        /// 使用命
         /// </summary>
-        /// <param name="cmd"></param>
+        /// <param name="logger"></param>
         /// <returns></returns>
-        private static bool TryGetCommand(out Command cmd)
+        private static bool UseCommand(ILogger logger)
         {
             var args = Environment.GetCommandLineArgs();
-            return Enum.TryParse(args.Skip(1).FirstOrDefault(), true, out cmd);
+            if (Enum.TryParse<Command>(args.Skip(1).FirstOrDefault(), true, out var cmd) == false)
+            {
+                return false;
+            }
+
+            var action = cmd == Command.Start ? "启动" : "停止";
+            try
+            {
+                if (OperatingSystem.IsWindows())
+                {
+                    UseCommandAtWindows(cmd);
+                }
+                else if (OperatingSystem.IsLinux())
+                {
+                    UseCommandAtLinux(cmd);
+                }
+                else
+                {
+                    return false;
+                }
+                logger.LogInformation($"服务{action}成功");
+            }
+            catch (Exception ex)
+            {
+                logger.LogError(ex.Message, $"服务{action}异常");
+            }
+            return true;
         }
 
         /// <summary>