1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-07-03 06:45:59 +02:00

Start of package management

This commit is contained in:
Brian Fiete 2021-02-25 08:10:21 -08:00
parent e517a9745a
commit e6c4a95ccd
25 changed files with 4316 additions and 692 deletions

View file

@ -7,15 +7,131 @@ namespace IDE.Util
{
enum VerSpec
{
case None;
case SemVer(SemVer ver);
case Path(String path);
case Git(String url);
case Git(String url, SemVer ver);
public void Dispose() mut
{
switch (this)
{
case .None:
case .SemVer(let ver):
delete ver;
case .Path(let path):
delete path;
case .Git(let url, let ver):
delete url;
delete ver;
}
this = .None;
}
public VerSpec Duplicate()
{
switch (this)
{
case .None:
return .None;
case .SemVer(let ver):
return .SemVer(new SemVer(ver));
case .Path(let path):
return .Path(new String(path));
case .Git(let url, let ver):
return .Git(new String(url), new SemVer(ver));
}
}
public Result<void> Parse(StructuredData data) mut
{
Dispose();
if (data.IsObject)
{
for (var valName in data.Enumerate())
{
if (valName == "Path")
{
var pathStr = new String();
data.GetCurString(pathStr);
this = .Path(pathStr);
}
else if (valName == "Git")
{
var pathStr = new String();
data.GetCurString(pathStr);
this = .Git(pathStr, null);
}
else if (valName == "Version")
{
if (this case .Git(var url, var prevVer))
{
if (prevVer == null)
{
var pathStr = new String();
data.GetCurString(pathStr);
SemVer semVer = new SemVer();
semVer.mVersion = pathStr;
this = .Git(url, semVer);
}
}
else
{
var pathStr = new String();
data.GetCurString(pathStr);
SemVer semVer = new SemVer();
semVer.mVersion = pathStr;
this = .SemVer(semVer);
}
}
else
{
//gApp.Fail("Invalid ver path");
return .Err;
}
}
}
else
{
let verString = scope String();
data.GetCurString(verString);
let semVer = new SemVer();
this = .SemVer(semVer);
Try!(semVer.Parse(verString));
}
return .Ok;
}
public void Serialize(String name, StructuredData data)
{
switch (this)
{
case .None:
case .Git(var path, var ver):
using (data.CreateObject(name))
{
data.Add("Git", path);
if (ver != null)
data.Add("Version", ver.mVersion);
}
case .SemVer(var ver):
data.Add(name, ver.mVersion);
case .Path(var path):
using (data.CreateObject(name))
{
data.Add("Path", path);
}
}
}
}
class VerSpecRecord
{
public VerSpec mVerSpec;
public Object mVerObject;
public Object mVerObject2;
public ~this()
{
@ -26,6 +142,7 @@ namespace IDE.Util
case .Git(let url): delete url;
}*/
delete mVerObject;
delete mVerObject2;
}
public void SetPath(StringView path)
@ -67,18 +184,31 @@ namespace IDE.Util
var pathStr = new String();
data.GetCurString(pathStr);
mVerObject = pathStr;
mVerSpec = .Git(pathStr);
mVerSpec = .Git(pathStr, null);
}
else if (valName == "Ver")
else if (valName == "Version")
{
var pathStr = new String();
data.GetCurString(pathStr);
SemVer semVer = new SemVer();
mVerObject = semVer;
semVer.mVersion = pathStr;
mVerSpec = .SemVer(semVer);
if (mVerSpec case .Git(var url, var prevVer))
{
if (prevVer == null)
{
var pathStr = new String();
data.GetCurString(pathStr);
SemVer semVer = new SemVer();
semVer.mVersion = pathStr;
mVerSpec = .Git(url, semVer);
mVerObject2 = semVer;
}
}
else
{
var pathStr = new String();
data.GetCurString(pathStr);
SemVer semVer = new SemVer();
semVer.mVersion = pathStr;
mVerSpec = .SemVer(semVer);
mVerObject = semVer;
}
}
else
{
@ -106,10 +236,13 @@ namespace IDE.Util
{
switch (mVerSpec)
{
case .Git(var path):
case .None:
case .Git(var path, var ver):
using (data.CreateObject(name))
{
data.Add("Git", path);
if (ver != null)
data.Add("Version", ver.mVersion);
}
case .SemVer(var ver):
data.Add(name, ver.mVersion);