Skip to content

Commit

Permalink
Merge pull request #87 from DreamEnderKing/dev
Browse files Browse the repository at this point in the history
Downloader封装完毕。
  • Loading branch information
hhzzff authored Jan 26, 2024
2 parents 07d5949 + 95ae612 commit 4aaef61
Show file tree
Hide file tree
Showing 12 changed files with 215 additions and 95 deletions.
35 changes: 35 additions & 0 deletions .github/preProcess/MauiEnvConfig.csx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Xml;

string path = @"D:\a\THUAI7\";
Visit(new DirectoryInfo(path));

void Visit(DirectoryInfo root)
{
foreach (var file in root.EnumerateFiles())
{
if (file.Name.EndsWith("csproj"))
{
ChangeFile(file.FullName);
}
}
foreach (var dir in root.EnumerateDirectories())
{
Visit(dir);
}
}

void ChangeFile(string path)
{
var document = new XmlDocument();
document.Load(path);
var es = document.GetElementsByTagName("TargetFrameworks");
if (es.Count == 2)
{
var i0 = es[0];
var i1 = es[1];
var text = i1.InnerText;
i0.InnerText = text.Split(';')[1];
i0.ParentNode.RemoveChild(i1);
}
document.Save(path);
}
15 changes: 11 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Setup dotnet-script
run: dotnet tool install --global dotnet-script
- name: Pre-Process1
run: dotnet script .github/preProcess/MauiEnvConfig.csx
- name: Install Workloads
run: dotnet workload install android ios maccatalyst maui-windows
run: dotnet workload install maui-windows
- name: Build Proto
run: dotnet build "./dependency/proto/Protos.csproj" -c Release
- name: Build Logic
Expand All @@ -27,10 +30,14 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Setup dotnet-script
run: dotnet tool install --global dotnet-script
- name: Pre-Process1
run: dotnet script .github/preProcess/MauiEnvConfig.csx
- name: Install Workloads
run: dotnet workload install android ios maccatalyst maui-windows
run: dotnet workload install maui-windows
- name: Build Installer
run: dotnet build "./installer/installer.sln" -c Release -f net8.0-windows10.0.19041.0
run: dotnet build "./installer/installer.sln" -c Release

dotnet-build-launcher:
if: true
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 6.0.x
dotnet-version: 8.0.x

- name: Check Logic
run: |
Expand All @@ -34,7 +34,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 7.0.x
dotnet-version: 8.0.x

- name: Check Installer
run: |
Expand All @@ -48,7 +48,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 6.0.x
dotnet-version: 8.0.x

- name: Check Launcher
run: |
Expand Down
5 changes: 5 additions & 0 deletions installer/MauiProgram.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ namespace installer
{
public static class MauiProgram
{
public static Model.Downloader Downloader = new Model.Downloader();
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
Expand All @@ -15,6 +16,10 @@ public static MauiApp CreateMauiApp()
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});

// 此处填写Secret ID和Secret Key
Downloader.Cloud.UpdateSecret("***",
"***"); ;

#if DEBUG
builder.Logging.AddDebug();
#endif
Expand Down
81 changes: 51 additions & 30 deletions installer/Model/Downloader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,42 +23,34 @@ public class UserInfo
public string _id = "";
public string email = "";
}
public string ProgramName = "THUAI7"; // 要运行或下载的程序名称
public string StartName = "maintest.exe"; // 启动的程序名
public Local_Data Data;
public Tencent_Cos Cloud;
public string ProgramName = "THUAI7"; // 要运行或下载的程序名称
public string StartName = "maintest.exe"; // 启动的程序名
public Local_Data Data; // 本地文件管理器
public Tencent_Cos Cloud; // THUAI7 Cos桶

public HttpClient Client = new HttpClient();
public EEsast Web = new EEsast();
protected Logger Log = LoggerProvider.FromConsole();
public EEsast Web = new EEsast(); // EEsast服务器
protected Logger Log = LoggerProvider.FromConsole();// 日志管理器

public enum UpdateStatus
{
success, unarchieving, downloading, hash_computing, error
} //{ newUser, menu, move, working, initializing, disconnected, error, successful, login, web, launch };
public UpdateStatus Status;

ConcurrentQueue<string> downloadFailed = new ConcurrentQueue<string>(); //更新失败的文件名
public List<string> UpdateFailed
{
get { return downloadFailed.ToList(); }
}
public void ResetDownloadFailedInfo()
{
downloadFailed.Clear();
}
public UpdateStatus Status; // 当前工作状态

public ConcurrentQueue<string> downloadFailed = new ConcurrentQueue<string>();
public string Route { get; set; }
public string Username { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public string Username { get => Web.Username; set { Web.Username = value; } }
public string Password { get => Web.Password; set { Web.Password = value; } }
public string UserId { get => Web.ID; }
public string UserEmail { get => Web.Email; }
public string CodeRoute { get; set; } = string.Empty;
public string? Language { get; set; } = null;
public string PlayerNum { get; set; } = "nSelect";
public enum LaunchLanguage { cpp, python };
public LaunchLanguage launchLanguage { get; set; } = LaunchLanguage.cpp;
public LaunchLanguage Language { get; set; } = LaunchLanguage.cpp;
public enum UsingOS { Win, Linux, OSX };
public UsingOS usingOS { get; set; }
public ConcurrentStack<Exception> Exceptions = new ConcurrentStack<Exception>();
public class Updater
{
public string Message = string.Empty;
Expand All @@ -68,7 +60,7 @@ public class Updater
public bool ProfileAvailable { get; set; }
}
public bool LoginFailed { get; set; } = false;
public bool RememberMe { get; set; }
public bool RememberMe { get => Data.RememberMe; set { Data.RememberMe = value; } }

#endregion

Expand All @@ -77,7 +69,7 @@ public Downloader()
{
Data = new Local_Data();
Route = Data.InstallPath;
Cloud = new Tencent_Cos("1314234950", "ap-beijing", "thuai6");
Cloud = new Tencent_Cos("1319625962", "ap-beijing", "bucket1");
Web.Token_Changed += SaveToken;
string? temp;
if (Data.Config.TryGetValue("Remembered", out temp))
Expand Down Expand Up @@ -140,6 +132,15 @@ public void Install()
}
}

/// <summary>
/// 已有安装目录时移动安装目录到其他位置
/// </summary>
/// <param name="newPath">新的THUAI7根目录</param>
public void ResetInstallPath(string newPath)
{
Data.ResetInstallPath(newPath);
}

/// <summary>
/// 检测是否需要进行更新
/// 返回真时则表明需要更新
Expand Down Expand Up @@ -185,14 +186,25 @@ public void Update()
Status = UpdateStatus.error;
}

/// <summary>
/// 登录到EEsast
/// </summary>
/// <param name="username">用户名</param>
/// <param name="password">密码</param>
/// <returns></returns>
public async Task Login(string username = "", string password = "")
{
Username = username.Length > 0 ? username : Username;
Password = password.Length > 0 ? password : Password;
Username = string.IsNullOrEmpty(username) ? Username : username;
Password = string.IsNullOrEmpty(password) ? Password : password;
await Web.LoginToEEsast(Client, Username, Password);
}

public void SaveToken(object? sender, EventArgs args) // 保存token
/// <summary>
/// 存储EEsast身份标识(修改Token时自动触发)
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
public void SaveToken(object? sender, EventArgs args)
{
if (Data.Config.ContainsKey("Token"))
Data.Config["Token"] = Web.Token;
Expand All @@ -201,7 +213,6 @@ public void SaveToken(object? sender, EventArgs args) // 保存token
Data.SaveConfig();
}


public void RememberUser()
{
if (Data.Config.ContainsKey("Username"))
Expand All @@ -221,6 +232,7 @@ public void RememberUser()

Data.SaveConfig();
}

public void ForgetUser()
{
if (Data.Config.ContainsKey("Remembered"))
Expand All @@ -234,8 +246,17 @@ public void ForgetUser()

Data.SaveConfig();
}

/// <summary>
/// 上传选手代码
/// </summary>
/// <param name="player_id">对应玩家id</param>
public void UploadFiles(int player_id)
{
Web.UploadFiles(Client, Path.Combine(Data.InstallPath, Data.UserCodePath),
Language == LaunchLanguage.cpp ? "cpp" : "python",
$"player_{player_id}").Wait();
}
#endregion
}


}
}
Loading

0 comments on commit 4aaef61

Please sign in to comment.