public void Organize() { var modJarCache = new Dictionary <string, ZipArchive>(); foreach (var jarPath in ModJarAccessor.textureDomainToModJar.Values) { modJarCache.Add(jarPath, ZipFile.OpenRead(jarPath)); } const string LOG = "SystemTextre"; Program.InitializingLogger.Info(LOG, "テクスチャの配置を開始"); foreach (var entry in srcProvider.Enumerate()) { var jarPath = ModJarAccessor.textureDomainToModJar[entry.Mod]; var archive = modJarCache[jarPath]; var destFile = destProvider.GetSystemTexturePath(entry.Category, entry.Feature); if (!File.Exists(destFile)) { DirectoryUtil.Create(Path.GetDirectoryName(destFile)); Program.InitializingLogger.Info(LOG, $"{jarPath.GetRelativePath()} から {entry.Category}/{entry.Feature} を展開中"); archive.GetEntry(entry.SrcPath).ExtractToFile(destFile, overwrite: false); } } Program.InitializingLogger.Info(LOG, "テクスチャの配置完了"); }
public override void Init() { base.Init(); FileComponent file = Owner.Get <FileComponent>(); ClientComponent client = Entity.Get <ClientComponent>(); try { // TODO: Support folders! // string folder = ""; // client.Root; string path = !string.IsNullOrEmpty(folder) ? Path.Combine(client.Download, folder) : client.Download; DirectoryUtil.Create(path); file.Path = Path.Combine(path, file.Name); } catch (Exception ex) { Console.WriteLine(ex.Message); file.Path = Path.Combine(client.Download, file.Name); } ServerComponent server = Entity.Get <ServerComponent>(); if (server.Enabled && Inactive) { Start(); } }
public bool TryDownload(DownloadCandidate candidate, string filePath) { if (File.Exists(filePath)) { return(true); } bool succeeded = false; foreach (var urlStr in candidate.Enumerate()) { var url = new Uri(urlStr); DirectoryUtil.Create(Path.GetDirectoryName(filePath)); File.Create(filePath).Close(); this.logger.Info("Downloader", $"{url} から {filePath.GetRelativePath()} にダウンロード中"); try { this.client.DownloadFile(url, filePath); succeeded = true; } catch (Exception ex) { this.logger.Error("Downloader", $"エラー: {ex.Message}"); this.logger.Debug("Downloader", $"{ex}"); succeeded = false; } if (succeeded) { break; } } return(succeeded); }
private void Download(IEnumerable items, string folder) { foreach (BrowseComponent browse in items) { if (browse.File) { Download(browse); } else if (browse.Folder) { ClientComponent client = MenuController.SelectedItem; string subfolder = Path.Combine(folder, browse.Name); string path = Path.Combine(client.Download, subfolder); if (!DirectoryUtil.Exists(path)) { DirectoryUtil.Create(path); } IEnumerable children = browse.GetChildren(browse); if (children != null && !folder.Equals(subfolder)) { Download(children, subfolder); } } } }
public void AddCategory(string category) { string categoryDir = this.provider.GetCategoryDirectoryUser(category); DirectoryUtil.Create(categoryDir); this.Registry.AddCategory(category); }
public void generate(string outputPath, IEnumerable <string> supportMods) { string respackPath = Path.Combine(outputPath, ResourcePackName); DirectoryUtil.Create(respackPath); organizeModsTextures(respackPath, supportMods); generatePackMeta(respackPath); compress(respackPath); DirectoryUtil.DeleteRecursive(respackPath); }
// Constructors public DownloadMachine(DownloadData download) : base(download) { File = new JsonFile(); //download); try { string folder = download.Root; string path = !string.IsNullOrEmpty(folder) ? Path.Combine(download.Client.DownloadFolder, folder) : download.Client.DownloadFolder; DirectoryUtil.Create(path); Data.Path = Path.Combine(path, download.Name); } catch (Exception ex) { Console.WriteLine(ex.Message); Data.Path = Path.Combine(download.Client.DownloadFolder, download.Name); } }
public void InitEnvironment() { #if DEBUG Program.InitializingLogger.Debug("TEST", "debug - 詳細なログ"); Program.InitializingLogger.Info("TEST", "info - 通常のログ"); Program.InitializingLogger.Warn("TEST", "warn - 警告。無視しても問題ない"); Program.InitializingLogger.Error("TEST", "error - エラー。再起不能"); #endif DirectoryUtil.Create(DefaultDataDirPath); if (!File.Exists(defaultDataFilesZip) || !Directory.Exists(DefaultDataDirPath) || Directory.GetFiles(DefaultDataDirPath).Length == 0) { generateFileIfNotExists(defaultDataFilesZip, Resources.DefaultDataFilesZip); DirectoryUtil.DeleteRecursive(DefaultDataDirPath); Program.InitializingLogger.Info("Initializer-Extract", $"{defaultDataFilesZip.GetRelativePath()} を展開中"); ZipFile.ExtractToDirectory(defaultDataFilesZip, DefaultDataDirPath); Program.InitializingLogger.Info("Initializer-Extract", $"展開完了"); } generateFileIfNotExists(systemTextureSettingFilePath, Resources.SystemTextureSettingFile); var downloader = new ModTexturesDownloader(); downloader.DownloadDependencies(); if (downloader.HasError) { this.HasError = true; } // TODO: ここでModのjarファイルのテクスチャの配置処理 var organizer = new ModTextureOrganizer(new SystemTextureProvider(systemTextureSettingFilePath), Program.TextureProvider); organizer.Organize(); if (organizer.HasError) { this.HasError = true; } }