コード例 #1
0
 public async Task SwitchToVersion(ByondVersion version)
 {
     if (version.Equals(getVersion()))
     {
         logger.LogInformation($"Server is on {version.Major}.{version.Minor} version. No switch is needed.");
         return;
     }
     if (!Directory.Exists(GetByondDirectoryPath(version)))
     {
         logger.LogInformation($"Version {version.Major}.{version.Minor} is not installed. Downloading and installing...");
         await DownloadByond(version);
     }
     if (!getVersion(GetByondDirectoryPath(version)).Equals(version))
     {
         throw new Exception($"Byond version '{version.Major}.{version.Minor}' data mismatches folder name or ByondVersion data. Please manually remove this version.");
     }
     if (Directory.Exists(GetByondDirectoryPath()))
     {
         Directory.Delete(GetByondDirectoryPath());
     }
     FileSystemHelper.CreateRelativeSymbolicLink(GetByondDirectoryPath(version), GetByondDirectoryPath(), Emet.FileSystems.FileType.Directory);
     if (!version.Equals(getVersion()))
     {
         throw new Exception($"Byond version switch failed.");
     }
 }