From a6abcd529522c6682a4c2a1f25b1eaf6bd74d53d Mon Sep 17 00:00:00 2001 From: Physcik Date: Thu, 8 Jan 2026 21:14:55 +0500 Subject: Package start --- engine/Components/Packages/Package.go | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 engine/Components/Packages/Package.go (limited to 'engine/Components/Packages/Package.go') diff --git a/engine/Components/Packages/Package.go b/engine/Components/Packages/Package.go new file mode 100644 index 0000000..51e2a80 --- /dev/null +++ b/engine/Components/Packages/Package.go @@ -0,0 +1,42 @@ +package packages + +import ( + "fmt" + "os" + + settings "github.com/DegustatorPonos/RuinesOfRafdolon/Settings" +) + +type PackageDescription struct { + Name string `json:"name"` + Version uint64 `json:"version"` + Type string `json:"type"` +} + +type Package struct { + Description PackageDescription `json:"description"` +} + +func ReadPackage(dir os.DirEntry) (*Package, error) { + var dirPath = ConcantinateFileLocation(settings.Current.PackagesLocation, dir.Name()) + var desc = PackageDescription{} + if descErr := ReadJSONfromFile(ConcantinateFileLocation(dirPath, "Description.json"), &desc); descErr != nil { + return nil, descErr + } + if descErr := desc.Validate(); descErr != nil { + return nil, fmt.Errorf("Failed to parse descriptor: %s", descErr.Error()) + } + return &Package{ + Description: desc, + }, nil +} + +func (base *PackageDescription) Validate() error { + if base.Name == "" { + return fmt.Errorf("Invalid package descriptor: the name cannot be empty") + } + if base.Version == 0{ + return fmt.Errorf("Invalid package descriptor: the version cannot be 0") + } + return nil +} -- cgit v1.3