diff --git a/domain/domain.go b/domain/domain.go index 995b6b5..af44118 100644 --- a/domain/domain.go +++ b/domain/domain.go @@ -2,20 +2,17 @@ package domain import ( "errors" - - "git.gregbrzezinski.com/Skirda/skirdaGoLauncher/sharedutils/games/skirdagame" - "git.gregbrzezinski.com/Skirda/skirdaGoLauncher/sharedutils/skirdasession" ) type SkirdaDomain struct { - DomainId string - skirdagame.SkirdaGames - skirdasession.SkirdaSessions + DomainId string `json:"domainId"` + SkirdaGames `json:"games"` + // skirdasession.SkirdaSessions } -func (domain SkirdaDomain) BuildDomain(newGames []skirdagame.SkirdaGame, newSessions []skirdasession.SkirdaSession) { +func (domain SkirdaDomain) BuildDomain(newGames []SkirdaGame, newSessions []SkirdaSession) { domain.AddGames(newGames) - domain.AddSessions(newSessions) + // domain.AddSessions(newSessions) } type Domains []SkirdaDomain @@ -24,7 +21,7 @@ func (domains Domains) Set(newDomains []SkirdaDomain) { domains = append([]SkirdaDomain{}, newDomains...) } -func (domains Domains) FindGameByID(gameId string) (skirdagame.SkirdaGame, error) { +func (domains Domains) FindGameByID(gameId string) (SkirdaGame, error) { for _, domain := range domains { game, _ := domain.FindGameByID(gameId) if game.GetSkirdaGameId() == gameId { @@ -35,21 +32,21 @@ func (domains Domains) FindGameByID(gameId string) (skirdagame.SkirdaGame, error return nil, errors.New("") } -func (domains Domains) GetGames() skirdagame.SkirdaGames { - allGames := skirdagame.SkirdaGames{} +func (domains Domains) GetGames() SkirdaGames { + allGames := SkirdaGames{} for _, domain := range domains { allGames = append(allGames, domain.SkirdaGames...) } return allGames } -func (domains Domains) GetSessions() skirdasession.SkirdaSessions { - plainSessions := skirdasession.SkirdaSessions{} - for _, domain := range domains { - plainSessions = append(plainSessions, domain.SkirdaSessions...) - } - return plainSessions -} +// func (domains Domains) GetSessions() SkirdaSessions { +// plainSessions := SkirdaSessions{} +// for _, domain := range domains { +// plainSessions = append(plainSessions, SkirdaSessions...) +// } +// return plainSessions +// } func (domains Domains) FindDomain(domainId string) (SkirdaDomain, error) { for _, domain := range domains { diff --git a/games/minecraftgame/minecraftgame.go b/domain/minecraftgame.go similarity index 52% rename from games/minecraftgame/minecraftgame.go rename to domain/minecraftgame.go index 76af011..a03cd92 100644 --- a/games/minecraftgame/minecraftgame.go +++ b/domain/minecraftgame.go @@ -1,12 +1,10 @@ -package minecraftgame +package domain -import "git.gregbrzezinski.com/Skirda/skirdaGoLauncher/sharedutils/games/skirdagame" - -const gameType = "minecraft" +// const gameType = "minecraft" type MinecraftGame struct { SkirdaGameId string - Assets skirdagame.GameUIAssets + Assets GameUIAssets Versions []string } @@ -14,7 +12,7 @@ func (game MinecraftGame) GetSkirdaGameId() string { return game.SkirdaGameId } -func (game MinecraftGame) GetUIAssets() skirdagame.GameUIAssets { +func (game MinecraftGame) GetUIAssets() GameUIAssets { return game.Assets } @@ -23,11 +21,11 @@ func (game MinecraftGame) GetLaunchArgs() []string { } func (game MinecraftGame) GetType() string { - return gameType + return "minecraft" } -func (game MinecraftGame) GetArguments() skirdagame.Arguments { - return skirdagame.Arguments{} +func (game MinecraftGame) GetArguments() Arguments { + return Arguments{} } func (game MinecraftGame) GetVersions() []string { diff --git a/games/skirdagame/skirdagame.go b/domain/skirdagame.go similarity index 97% rename from games/skirdagame/skirdagame.go rename to domain/skirdagame.go index 2192604..4a66705 100644 --- a/games/skirdagame/skirdagame.go +++ b/domain/skirdagame.go @@ -1,4 +1,4 @@ -package skirdagame +package domain import "errors" diff --git a/skirdasession/skirdasession.go b/domain/skirdasession.go similarity index 99% rename from skirdasession/skirdasession.go rename to domain/skirdasession.go index a2ad973..bbacc69 100644 --- a/skirdasession/skirdasession.go +++ b/domain/skirdasession.go @@ -1,4 +1,4 @@ -package skirdasession +package domain import ( "errors" diff --git a/games/steamgame/steamgame.go b/domain/steamgame.go similarity index 50% rename from games/steamgame/steamgame.go rename to domain/steamgame.go index df12489..225eea8 100644 --- a/games/steamgame/steamgame.go +++ b/domain/steamgame.go @@ -1,14 +1,10 @@ -package steamgame - -import "git.gregbrzezinski.com/Skirda/skirdaGoLauncher/sharedutils/games/skirdagame" - -const gameType = "steam" +package domain type SteamGame struct { SkirdaGameId string SteamId string - Assets skirdagame.GameUIAssets - Arguments skirdagame.Arguments + Assets GameUIAssets + Arguments Arguments // CurrentVersion string } @@ -16,7 +12,7 @@ func (game SteamGame) GetSkirdaGameId() string { return game.SkirdaGameId } -func (game SteamGame) GetUIAssets() skirdagame.GameUIAssets { +func (game SteamGame) GetUIAssets() GameUIAssets { return game.Assets } @@ -25,9 +21,9 @@ func (game SteamGame) GetLaunchArgs() []string { } func (game SteamGame) GetType() string { - return gameType + return "steam" } -func (game SteamGame) GetArguments() skirdagame.Arguments { +func (game SteamGame) GetArguments() Arguments { return game.Arguments } diff --git a/domain/structures.go b/domain/structures.go new file mode 100644 index 0000000..7d860c9 --- /dev/null +++ b/domain/structures.go @@ -0,0 +1,161 @@ +package domain + +import "strconv" + +type JavaVersion struct { + VersionNums `json:"version"` + Specifics []JavaVersionSpecifics `json:"specifics"` +} + +func (jVer *JavaVersion) GetVersionString() string { + return strconv.Itoa(jVer.Major) + "." + strconv.Itoa(jVer.Minor) + "." + strconv.Itoa(jVer.Patch) +} + +type JavaVersionSpecifics struct { + Os string `json:"os"` + Arch string `json:"arch"` + URL string `json:"URL"` + Sha1 string `json:"SHA1"` +} + +func (jv *JavaVersion) FindOs(os string, arch string) *JavaVersionSpecifics { + for _, s := range jv.Specifics { + if s.Os == os && s.Arch == arch { + return &s + } + } + return nil +} + +type VersionNums struct { + Major int `json:"major"` + Minor int `json:"minor"` + Patch int `json:"patch"` +} + +func (v *VersionNums) FillFromString(maj string, min string, patch string) error { + iMaj, err := strconv.Atoi(maj) + if err != nil { + return err + } + + iMin := 0 + iMin, err = strconv.Atoi(min) + if err != nil { + return err + } + + iPatch := 0 + iPatch, err = strconv.Atoi(patch) + if err != nil { + return err + } + + v.Major = iMaj + v.Minor = iMin + v.Patch = iPatch + + return nil +} + +type Version struct { + AssetIndex AssetIndex `json:"assetIndex"` + Downloads struct { + Client Artifact `json:"client"` + Server Artifact `json:"server"` + Mods struct { + Required []ModArtifact `json:"required"` + } `json:"mods"` + } `json:"downloads"` + ID string `json:"id"` + Libraries []Lib `json:"libraries"` + //ClientLog LogCfg + MainClass string `json:"mainClass"` + GameArgs []Argument + JVMArgs []Argument + Type string `json:"type"` + JavaVersion JavaVersion `json:"javaVersion"` +} + +type AssetIndex struct { + ID string `json:"id"` + TotalSize uint64 `json:"totalSize"` + Artifact +} + +// type Argument struct { +// Value string `json:"value"` +// Rules []Rule `json:"rules"` +// } + +type JavaVersionClientDistribution struct { //TODO Rename + Component string `json:"component"` + MajorVersion int `json:"majorVersion"` +} + +type Rule struct { + Action RuleAct `json:"action" mapstructure:"action"` + // OS information. All fields are regexes. + OS struct { + Name string `json:"name" mapstructure:"name"` + Version string `json:"version" mapstructure:"version"` + Arch string `json:"arch" mapstructure:"arch"` + } `json:"os" mapstructure:"os"` + Features struct { + IsDemoUser *bool `json:"is_demo_user" mapstructure:"is_demo_user"` + HasCustomResolution *bool `json:"has_custom_resolution" mapstructure:"has_custom_resolution"` + } `json:"features" mapstructure:"features"` +} + +type RuleAct string + +const ( + ActAllow RuleAct = "allow" + ActDisallow RuleAct = "disallow" +) + +type LibClassifiers struct { + JavaDoc *Artifact `json:"javadoc"` + NativesLinux *Artifact `json:"natives-linux"` + NativesMacOS *Artifact `json:"natives-osx"` + NativesWin *Artifact `json:"natives-windows"` + Sources *Artifact `json:"sources"` +} + +type Lib struct { + Downloads struct { + MainJar *Artifact `json:"artifact"` + LibClassifiers `json:"classifiers"` + } `json:"downloads"` + NativeSuffixes struct { + Linux string `json:"linux"` + MacOS string `json:"osx"` + Windows string `json:"windows"` + } `json:"natives"` + Name string `json:"name"` + Rules []Rule `json:"rules"` + ExtractRules struct { + Exclude []string `json:"exclude"` + } `json:"extract"` +} + +type Artifact struct { + SHA1 string `json:"sha1"` + Size uint64 `json:"size"` + URL string `json:"url"` +} + +type ModArtifact struct { + Artifact + File string + Name string + Version string +} + +type VersionMeta struct { + ID string `json:"id"` + Type string `json:"type"` + URL string `json:"url"` + + Installed bool +} diff --git a/osutils/json.go b/osutils/json.go index 522e789..dde5d4d 100644 --- a/osutils/json.go +++ b/osutils/json.go @@ -7,10 +7,10 @@ import ( "os" ) -func WriteStructAsJSON(data interface{}, versionJsonPath string) error { +func WriteStructAsJSON(data interface{}, JsonPath string) error { file, _ := json.MarshalIndent(data, "", " ") - directory, err := GetParentDir(versionJsonPath) + directory, err := GetParentDir(JsonPath) if err != nil { return err } @@ -18,7 +18,7 @@ func WriteStructAsJSON(data interface{}, versionJsonPath string) error { if err != nil { return err } - err = ioutil.WriteFile(versionJsonPath, file, 0644) + err = ioutil.WriteFile(JsonPath, file, 0644) if err != nil { return err } @@ -31,6 +31,7 @@ func ReadJsonFromDisk(target interface{}, filePath string) error { // if we os.Open returns an error then handle it if err != nil { fmt.Println(err) + return err } // fmt.Println("Successfully Opened users.json")