initial commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
using RTCSync.Services;
|
||||
using RTCSync.Utils;
|
||||
|
||||
namespace RTCSync.Options;
|
||||
|
||||
public class SyncTimeOption : IOption
|
||||
{
|
||||
public string Description => "Синхронизирует системное время со временем модуля реального времени. Если часы хранят UTC время, то используйте опцию universal";
|
||||
public List<string> OptionNames => ["-S", "--sync-time"];
|
||||
public string OptionValues => "{local, l, universal, u}";
|
||||
|
||||
public void Execute(OptionArgs args)
|
||||
{
|
||||
var device = DeviceDispatcher.SetUpDevice();
|
||||
if (device == null)
|
||||
return;
|
||||
|
||||
Console.WriteLine("Время на модуле:");
|
||||
DeviceReaders.PrintTimeRTC(device);
|
||||
var timeModel = DeviceReaders.GetTimeRTC(device);
|
||||
|
||||
// время в формате понятном для kernel32
|
||||
WindowsTimeUtils.SystemTime systime;
|
||||
|
||||
if (args.OptionValues.TryGetValue("unnamed", out var value) && value is "universal" or "u")
|
||||
systime = new WindowsTimeUtils.SystemTime(timeModel.Time);
|
||||
else if (value is "local" or "l")
|
||||
systime = new WindowsTimeUtils.SystemTime(timeModel.Time.ToUniversalTime());
|
||||
else
|
||||
systime = new WindowsTimeUtils.SystemTime(timeModel.Time.ToUniversalTime());
|
||||
|
||||
Console.WriteLine(WindowsTimeUtils.SetSystemTime(ref systime)
|
||||
? "Время установлено в системе"
|
||||
: "Ошибка: нет прав администратора");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user