/
vasiukoff
/
sg
Обзор
Документация
Войти
/
vasiukoff
/
sg
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/ViewModels/UpdateSubmodules.cs
105 строк
3 KB
leo
refactor: file-system watcher
01 сен 2025, 12:39
01 сен 2025, 12:39
cd80a55
Код
Авторство
О чём код?
using System.Collections.Generic; using System.Threading.Tasks; namespace SourceGit.ViewModels { public class UpdateSubmodules : Popup { public bool HasPreSelectedSubmodule { get; } public List<Models.Submodule> Submodules { get => _repo.Submodules; } public Models.Submodule SelectedSubmodule { get; set; } public bool UpdateAll { get => _updateAll; set => SetProperty(ref _updateAll, value); } public bool IsEnableInitVisible { get; set; } = true; public bool EnableInit { get; set; } = true; public bool EnableRecursive { get; set; } = true; public bool EnableRemote { get; set; } = false; public UpdateSubmodules(Repository repo, Models.Submodule selected) { _repo = repo; if (selected != null) { _updateAll = false; SelectedSubmodule = selected; IsEnableInitVisible = selected.Status == Models.SubmoduleStatus.NotInited; EnableInit = selected.Status == Models.SubmoduleStatus.NotInited; HasPreSelectedSubmodule = true; } else if (repo.Submodules.Count > 0) { SelectedSubmodule = repo.Submodules[0]; IsEnableInitVisible = true; HasPreSelectedSubmodule = false; } } public override async Task<bool> Sure() { var targets = new List<string>(); if (_updateAll) { foreach (var submodule in Submodules) targets.Add(submodule.Path); } else if (SelectedSubmodule != null) { targets.Add(SelectedSubmodule.Path); } if (targets.Count == 0) return true; var log = _repo.CreateLog("Update Submodule"); using var lockWatcher = _repo.LockWatcher(); Use(log); await new Commands.Submodule(_repo.FullPath) .Use(log) .UpdateAsync(targets, EnableInit, EnableRecursive, EnableRemote); log.Complete(); return true; } private readonly Repository _repo = null; private bool _updateAll = true; } }