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 }