1+ using System . Reflection ;
2+ using System . Threading . Tasks ;
3+
4+ namespace OpenMod . Installer . RocketMod . Helpers . Wrapper
5+ {
6+ public class NuGetPackageManagerWrapper : TypeWrapper
7+ {
8+ protected static PropertyInfo m_Logger ;
9+ protected static MethodInfo m_IgnoreDependencies ;
10+ protected static MethodInfo m_GetLatestPackageIdentityAsync ;
11+ protected static MethodInfo m_QueryPackageExactAsync ;
12+ protected static MethodInfo m_InstallAsync ;
13+
14+ public NuGetPackageManagerWrapper ( Assembly nugetAssembly , params object [ ] args ) : base ( nugetAssembly , "NuGetPackageManager" , args )
15+ {
16+ m_Logger ??= s_Type . GetProperty ( "Logger" ) ;
17+ m_IgnoreDependencies ??= s_Type . GetMethod ( "IgnoreDependencies" ) ;
18+ m_GetLatestPackageIdentityAsync ??= s_Type . GetMethod ( "GetLatestPackageIdentityAsync" ) ;
19+ m_QueryPackageExactAsync ??= s_Type . GetMethod ( "QueryPackageExactAsync" ) ;
20+ m_InstallAsync ??= s_Type . GetMethod ( "InstallAsync" ) ;
21+ }
22+
23+ public void SetLogger ( NuGetConsoleLoggerWrapper logger )
24+ {
25+ m_Logger . SetValue ( m_Instance , logger . Instance ) ;
26+ }
27+
28+ public void IgnoreDependencies ( params string [ ] packageIds )
29+ {
30+ m_IgnoreDependencies . Invoke ( m_Instance , new object [ ] { packageIds } ) ;
31+ }
32+
33+ public async Task < PackageIdentityWrapper > GetLatestPackageIdentityAsync ( string packageId )
34+ {
35+ var taskObj = m_GetLatestPackageIdentityAsync . Invoke ( m_Instance , new object [ ] { packageId } ) as Task ;
36+ var taskWrapper = new TaskWrapper < PackageIdentityWrapper > ( taskObj ) ;
37+ return await taskWrapper . GetResult ( ) ;
38+ }
39+
40+ public async Task < PackageSearchMetadataWrapper > QueryPackageExactAsync ( string packageId , string version = null , bool includePreRelease = false )
41+ {
42+ var taskObj = m_QueryPackageExactAsync . Invoke ( m_Instance , new object [ ] { packageId , version , includePreRelease } ) as Task ;
43+ var taskWrapper = new TaskWrapper < PackageSearchMetadataWrapper > ( taskObj ) ;
44+ return await taskWrapper . GetResult ( ) ;
45+ }
46+
47+ public async Task < NuGetInstallResultWrapper > InstallAsync ( PackageIdentityWrapper packageIdentity , bool allowPreReleaseVersions = false )
48+ {
49+ var taskObj = m_InstallAsync . Invoke ( m_Instance , new [ ] { packageIdentity . Instance , allowPreReleaseVersions } ) as Task ;
50+ var taskWrapper = new TaskWrapper < NuGetInstallResultWrapper > ( taskObj ) ;
51+ return await taskWrapper . GetResult ( ) ;
52+ }
53+ }
54+ }
0 commit comments