70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
|
package javaentities
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"os"
|
||
|
"path"
|
||
|
"runtime"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
type JavaVersion struct {
|
||
|
Major int
|
||
|
Minor int
|
||
|
Patch int
|
||
|
}
|
||
|
|
||
|
type JavaMetas struct {
|
||
|
JavaVersions []JavaMeta `json:"javaVersions"`
|
||
|
}
|
||
|
|
||
|
func (jm JavaMetas) GetOsURL() (string, error) {
|
||
|
|
||
|
}
|
||
|
|
||
|
type JavaMeta struct {
|
||
|
Version struct {
|
||
|
Major string `json:"major"`
|
||
|
Minor string `json:"minor"`
|
||
|
Patch string `json:"patch"`
|
||
|
} `json:"version"`
|
||
|
Specifics `json:"specifics"`
|
||
|
}
|
||
|
|
||
|
type SpecificJavaVersion struct {
|
||
|
Os string `json:"os"`
|
||
|
Arch string `json:"arch"`
|
||
|
URL string `json:"URL"`
|
||
|
Sha1 string `json:"SHA1"`
|
||
|
}
|
||
|
|
||
|
type Specifics []SpecificJavaVersion
|
||
|
|
||
|
func (s Specifics) getOsJava() (SpecificJavaVersion, error) {
|
||
|
for _, v := range s {
|
||
|
if v.Os == runtime.GOOS {
|
||
|
return v, nil
|
||
|
}
|
||
|
}
|
||
|
return SpecificJavaVersion{}, errors.New("not java for current os")
|
||
|
}
|
||
|
|
||
|
func (v *JavaVersion) CheckNotExists(launcherPath string) bool {
|
||
|
javaBinPath := path.Join(launcherPath, ".redist", "java", v.GetString())
|
||
|
_, err := os.Stat(javaBinPath)
|
||
|
|
||
|
return err != nil
|
||
|
}
|
||
|
|
||
|
func (v *JavaVersion) GetString() string {
|
||
|
var stringBuilder strings.Builder
|
||
|
stringBuilder.WriteString(strconv.Itoa(v.Major))
|
||
|
stringBuilder.WriteRune('.')
|
||
|
stringBuilder.WriteString(strconv.Itoa(v.Minor))
|
||
|
stringBuilder.WriteRune('.')
|
||
|
stringBuilder.WriteString(strconv.Itoa(v.Patch))
|
||
|
|
||
|
return stringBuilder.String()
|
||
|
}
|