diff --git a/netsd/Handlers/Start.cs b/netsd/Handlers/Start.cs index 68d73bc..2d346a7 100644 --- a/netsd/Handlers/Start.cs +++ b/netsd/Handlers/Start.cs @@ -3,10 +3,12 @@ using StartGrpc; namespace netsd.Handlers; -public class Start +public static class Start { - public Start() + public static async Task StartAsync() { + var parseServiceFile = await ServiceParser.Parse("/lib/systemd/system/sddm.service"); + Console.WriteLine($"ExecStart: {parseServiceFile.ExecStart}"); using var channel = UDSConnector.CreateChannel(); var client = new StartRpc.StartRpcClient(channel); diff --git a/netsd/Program.cs b/netsd/Program.cs index da48a0e..b785304 100644 --- a/netsd/Program.cs +++ b/netsd/Program.cs @@ -8,11 +8,11 @@ var rootCommand = new RootCommand("Linux service manager written in C#"); rootCommand.AddCommand(initCommand); rootCommand.AddCommand(startCommand); -initCommand.SetHandler((() => +initCommand.SetHandler(() => { new Init(); -})); +}); -startCommand.SetHandler((() => new Start())); +startCommand.SetHandler(async () => await Start.StartAsync()); return await rootCommand.InvokeAsync(args); diff --git a/netsd/Utils/ServiceParser.cs b/netsd/Utils/ServiceParser.cs new file mode 100644 index 0000000..dd9a251 --- /dev/null +++ b/netsd/Utils/ServiceParser.cs @@ -0,0 +1,20 @@ +using IniParser; + +namespace netsd.Utils; + +public class ServiceParser +{ + public string? ExecStart { get; private set; } + + public static async Task Parse(string ServiceInfoPath) + { + var readServiceFile = await File.ReadAllTextAsync(ServiceInfoPath); + var parser = new FileIniDataParser(); + var serviceData = parser.Parser.Parse(readServiceFile); + + var sv = new ServiceParser(); + sv.ExecStart = serviceData["Service"]["ExecStart"]; + + return sv; + } +} diff --git a/netsd/netsd.csproj b/netsd/netsd.csproj index 062de03..ee2b409 100644 --- a/netsd/netsd.csproj +++ b/netsd/netsd.csproj @@ -33,6 +33,7 @@ +