mirror of
https://onedev.site.tesses.net/crosslang/crosslangdevstudio
synced 2026-02-08 09:15:45 +00:00
73 lines
1.9 KiB
C#
73 lines
1.9 KiB
C#
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 WebAppPackageManager : IPackageManager
|
|
{
|
|
public string Filter => "webapp";
|
|
|
|
private IEnumerable<string> GetFiles()
|
|
{
|
|
var path = Path.Combine(CrossLangShell.CrossLangConfigDirectory, "WebApps");
|
|
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<CrossLangDependency> 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-webapp", 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)
|
|
{
|
|
var dir = Path.GetDirectoryName(item);
|
|
if(dir is not null)
|
|
Directory.Delete(dir,true);
|
|
return;
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|