From 71412a34fc93e9a3ae4772d2d519e4ed46c5ebe6 Mon Sep 17 00:00:00 2001 From: Booklordofthedings Date: Sat, 7 Sep 2024 23:31:57 +0200 Subject: [PATCH] Rewrite into single file application start --- BeefProj.toml | 1 + BeefSpace.toml | 2 +- src/Program.bf | 99 +++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 100 insertions(+), 2 deletions(-) diff --git a/BeefProj.toml b/BeefProj.toml index 2656c4f..c5d7dc8 100644 --- a/BeefProj.toml +++ b/BeefProj.toml @@ -1,4 +1,5 @@ FileVersion = 1 +Dependencies = {corlib = "*", Bofa = "*"} [Project] Name = "pkkg" diff --git a/BeefSpace.toml b/BeefSpace.toml index 2b482f1..2b8f53f 100644 --- a/BeefSpace.toml +++ b/BeefSpace.toml @@ -1,5 +1,5 @@ FileVersion = 1 -Projects = {pkkg = {Path = "."}} +Projects = {pkkg = {Path = "."}, Bofa = {Path = "deps/Bofa"}} [Workspace] StartupProject = "pkkg" diff --git a/src/Program.bf b/src/Program.bf index aaf12fa..b333875 100644 --- a/src/Program.bf +++ b/src/Program.bf @@ -1,11 +1,108 @@ namespace pkkg; using System; +using System.IO; +using System.Collections; + +using Bofa; +using Bofa.Serialization; class Program { - public static void Main(String[] pArgs) + public static int32 VersionMajor = 1; + public static int32 VersionMinor = 0; + public static int32 VersionPatch = 0; + + public static String TemplateFile = """ + #This is the pkkg template file + """; + + public static String PkkgFile = "pkkg"; + public static String LogFile = "pkkg.log"; + + public enum ReturnValues : int32 { + //Errors + UnknownError = -1, + FileWriteError = -2, + FileReadError = -3, + //Sucesses + CreatedTemplateFile = 1, + } + + public static int32 Main(String[] pArgs) + { + Log(scope $"Starting pkkg {VersionMajor}.{VersionMinor}.{VersionPatch}"); + if(!File.Exists(PkkgFile)) + { + if(File.WriteAllText(PkkgFile, TemplateFile) case .Err) + { + Log("Unable to write template file"); + return (.)ReturnValues.FileWriteError; + } + Log("Wrote template file"); + return (.)ReturnValues.CreatedTemplateFile; + } + + //pkkg file already exists, trying to parse it + Log("Attempting to read pkkg file"); + var packageFile = scope String(); + if(File.ReadAllText(PkkgFile, packageFile) case .Err) + { + Log("Unable to read config file"); + return (.)ReturnValues.FileReadError; + } + Log("Read file attempting to parse it"); + + Package current = new .(); + if(current.Deserialize()) + { + + } + } + + ///Log a message to the console and to a file + public static void Log(StringView pMessage) + { + Console.WriteLine(pMessage); + if(!LogFile.IsEmpty) + File.WriteAllText(LogFile, pMessage, true).IgnoreError(); + } + + public static Result ParseBofa(StringView pMessage) + { + Dictionary results = new .(); + defer { DeleteDictionaryAndValues!(results); } + List errors = scope .(); + BofaParser.Parse(pMessage, results, errors); + if(errors.Count > 0) + return .Err; //We are hardcode like that } + +} + +[BofaSerialize] +class Package +{ + public String Name ~ delete _; + public String Description ~ delete _; + public String Url ~ delete _; + + [BofaSerialize] + public class Author + { + public String Name ~ delete _; + public String Url ~ delete _; + } + public List Authors ~ DeleteContainerAndItems!(_); + + [BofaSerialize] + public class Dependency + { + public String Name ~ delete _; + public String GitUrl ~ delete _; + public String Branch ~ delete _; + } + public List Dependencies ~ DeleteContainerAndItems!(_); } \ No newline at end of file