Dreamine.Web
1.0.0.0
WPF와 Blazor를 한 코드 흐름으로 연결하고 반복적인 MVVM 코드를 줄이는 오픈소스 FullKit 공식 웹 애플리케이션입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
VersionSyncService.cs
이 파일의 문서화 페이지로 가기
1
using
System.IO;
2
using
System.Text.RegularExpressions;
3
using
DreamineWeb.Models
;
4
5
namespace
DreamineWeb.Services
;
6
15
public
class
VersionSyncService
16
{
25
private
readonly
ILibraryStore
_store
;
34
private
readonly
string
_libRoot
;
35
44
private
static
readonly Regex
_versionRx
=
45
new
(
@"<Version>\s*([^<\s]+)\s*</Version>"
, RegexOptions.IgnoreCase | RegexOptions.Compiled);
46
71
public
VersionSyncService
(
ILibraryStore
store,
DreamineOptions
opts)
72
{
73
_store
= store;
74
_libRoot
= opts.
LibrarySourceRoot
;
75
}
76
85
public
bool
IsConfigured
=> !
string
.IsNullOrWhiteSpace(
_libRoot
) && Directory.Exists(
_libRoot
);
86
103
public
async Task<int>
SyncAsync
()
104
{
105
if
(!
IsConfigured
)
return
-1;
106
107
// 어셈블리명 → 버전 매핑
108
var map =
new
Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
109
foreach
(var f
in
Directory.EnumerateFiles(
_libRoot
,
"*.csproj"
, SearchOption.AllDirectories))
110
{
111
var name = Path.GetFileNameWithoutExtension(f);
112
if
(name.EndsWith(
".Tests"
, StringComparison.OrdinalIgnoreCase))
continue
;
113
var m =
_versionRx
.Match(await File.ReadAllTextAsync(f));
114
if
(m.Success) map[name] = m.Groups[1].Value;
115
}
116
117
var libs = (await
_store
.GetAllAsync()).ToList();
118
int
count = 0;
119
foreach
(var lib
in
libs)
120
{
121
if
(!map.TryGetValue(lib.Name, out var ver))
continue
;
122
if
(lib.Version == ver)
continue
;
123
lib.Version = ver;
124
await
_store
.SaveAsync(lib);
125
count++;
126
}
127
return
count;
128
}
129
}
DreamineWeb.Models
Definition
DocMember.cs:1
DreamineWeb.Services
Definition
AdminAuthService.cs:6
DreamineWeb.Models.DreamineOptions
Definition
DreamineOptions.cs:14
DreamineWeb.Models.DreamineOptions.LibrarySourceRoot
string LibrarySourceRoot
Definition
DreamineOptions.cs:69
DreamineWeb.Services.ILibraryStore
Definition
ILibraryStore.cs:14
DreamineWeb.Services.VersionSyncService.SyncAsync
async Task< int > SyncAsync()
Definition
VersionSyncService.cs:103
DreamineWeb.Services.VersionSyncService._versionRx
static readonly Regex _versionRx
Definition
VersionSyncService.cs:44
DreamineWeb.Services.VersionSyncService.VersionSyncService
VersionSyncService(ILibraryStore store, DreamineOptions opts)
Definition
VersionSyncService.cs:71
DreamineWeb.Services.VersionSyncService.IsConfigured
bool IsConfigured
Definition
VersionSyncService.cs:85
DreamineWeb.Services.VersionSyncService._store
readonly ILibraryStore _store
Definition
VersionSyncService.cs:25
DreamineWeb.Services.VersionSyncService._libRoot
readonly string _libRoot
Definition
VersionSyncService.cs:34
Services
VersionSyncService.cs
다음에 의해 생성됨 :
1.17.0