using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Threading.Tasks; using Avalonia.Controls; namespace CrossLangDevStudio.Models; public class TemplatePackageManager : IPackageManager { public string Filter => "template"; private IEnumerable GetFiles() { var path = Path.Combine(CrossLangShell.CrossLangConfigDirectory, "Templates"); if (Directory.Exists(path)) foreach (var dir in Directory.EnumerateDirectories(path)) { var file = Path.Combine(dir, $"{Path.GetFileName(dir)}.crvm"); if (File.Exists(file)) yield return file; } } public IEnumerable GetInstalledPackages() { foreach (var item in GetFiles()) { var file = new CrossLangFile(); try { file.Load(item); } catch (Exception) { continue; } yield return new CrossLangDependency { Name = file.Name, Version = file.Version }; } } public async Task InstallPackageAsync(string name, CrossLangVersion version) { await CrossLangShell.RunCommandAsync(Environment.CurrentDirectory, "crosslang", ["install-template", name, $"--version={version.ToString()}"]); } public void UninstallPackage(string name) { foreach (var item in GetFiles()) { var file = new CrossLangFile(); try { file.Load(item); if (name == file.Name) { File.Delete(item); return; } } catch (Exception) { continue; } } } }