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:
parent
e517a9745a
commit
e6c4a95ccd
25 changed files with 4316 additions and 692 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue