2024-07-21 04:38:31 +02:00
|
|
|
|
using System.Text.Json;
|
|
|
|
|
using System.Text.Json.Serialization;
|
|
|
|
|
|
|
|
|
|
namespace Nerfed.Compiler;
|
|
|
|
|
|
|
|
|
|
public class CSProject
|
|
|
|
|
{
|
|
|
|
|
public string Name { get; set; }
|
|
|
|
|
public string Guid { get; set; }
|
|
|
|
|
//public bool IsEditor { get; set; }
|
|
|
|
|
// Add platform stuff here..?
|
|
|
|
|
// Add dll's here..?
|
|
|
|
|
// Add dependencies here..?
|
|
|
|
|
|
|
|
|
|
public static bool Create(string projectFilePath, string name, out CSProject project)
|
|
|
|
|
{
|
|
|
|
|
project = null;
|
|
|
|
|
|
|
|
|
|
if (File.Exists(projectFilePath))
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"ERROR: File already exists!");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Create project file.
|
|
|
|
|
project = new CSProject
|
|
|
|
|
{
|
|
|
|
|
Name = name,
|
|
|
|
|
Guid = System.Guid.NewGuid().ToString("B").ToUpper(),
|
|
|
|
|
};
|
|
|
|
|
|
2024-07-21 22:31:04 +02:00
|
|
|
|
Save(project, projectFilePath);
|
|
|
|
|
|
2024-07-21 04:38:31 +02:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static bool Save(CSProject project, string projectFilePath)
|
|
|
|
|
{
|
|
|
|
|
string jsonString = JsonSerializer.Serialize(project, CSProjectContext.Default.CSProject);
|
|
|
|
|
|
|
|
|
|
File.WriteAllText(projectFilePath, jsonString);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static bool Open(string projectFilePath, out CSProject project)
|
|
|
|
|
{
|
|
|
|
|
string jsonString = File.ReadAllText(projectFilePath);
|
|
|
|
|
project = JsonSerializer.Deserialize(jsonString, CSProjectContext.Default.CSProject);
|
|
|
|
|
|
|
|
|
|
if (project == null)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"ERROR: Could not open {typeof(CSProject)}.");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[JsonSerializable(typeof(CSProject))]
|
|
|
|
|
public partial class CSProjectContext : JsonSerializerContext
|
|
|
|
|
{
|
|
|
|
|
}
|