mirror of
https://onedev.site.tesses.net/crosslang/crosslangdevstudio
synced 2026-02-08 09:15:45 +00:00
Get way further
This commit is contained in:
72
Models/ConsolePackageManger.cs
Normal file
72
Models/ConsolePackageManger.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
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 ConsolePackageManager : IPackageManager
|
||||
{
|
||||
public string Filter => "console";
|
||||
|
||||
private IEnumerable<string> GetFiles()
|
||||
{
|
||||
var path = Path.Combine(CrossLangShell.CrossLangConfigDirectory, "ConsoleApps");
|
||||
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-console", 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
70
Models/TemplatePackageManager.cs
Normal file
70
Models/TemplatePackageManager.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
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<string> 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<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-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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
72
Models/ToolPackageManager.cs
Normal file
72
Models/ToolPackageManager.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
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 ToolPackageManager : IPackageManager
|
||||
{
|
||||
public string Filter => "tool";
|
||||
|
||||
private IEnumerable<string> GetFiles()
|
||||
{
|
||||
var path = Path.Combine(CrossLangShell.CrossLangConfigDirectory, "Tools");
|
||||
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-tool", 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
72
Models/WebAppPackageManager.cs
Normal file
72
Models/WebAppPackageManager.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user