optimizations

This commit is contained in:
doesnm 2025-05-24 14:48:21 +00:00
parent b3570772e7
commit b937d62cc2

33
main.go
View file

@ -247,8 +247,16 @@ func contains(slice []string, item string) bool {
} }
return false return false
} }
func processAPK(filePath string) Package { func processAPK(filePath string,indexCache Index) Package {
fmt.Printf("Processing APK: %s\n", filePath) fmt.Printf("Processing APK: %s\n", filePath)
for _, pkgs := range indexCache.Packages {
for _, pkg := range pkgs {
if pkg.ApkName == filePath {
log.Printf("Warning: using %s metadata from cache",filePath)
return pkg
}
}
}
var buf bytes.Buffer var buf bytes.Buffer
enc := xml.NewEncoder(&buf) enc := xml.NewEncoder(&buf)
@ -394,7 +402,7 @@ func getFilenameFromURL(urlStr string) (string, error) {
// Function to handle downloading and processing APKs from a release // Function to handle downloading and processing APKs from a release
func handleRelease(release Release) []Package { func handleRelease(release Release,indexCache Index) []Package {
var packages []Package var packages []Package
for _, asset := range release.Assets { for _, asset := range release.Assets {
if !isAPK(asset.BrowserDownloadURL) { if !isAPK(asset.BrowserDownloadURL) {
@ -412,7 +420,7 @@ func handleRelease(release Release) []Package {
os.Exit(1) os.Exit(1)
} }
} }
packageInfo := processAPK(filePath) packageInfo := processAPK(filePath,indexCache)
packages = append(packages,packageInfo) packages = append(packages,packageInfo)
} }
@ -513,7 +521,7 @@ func signJarWithJarsigner(jarFile string, keystore string, password string, alia
return err, string(output) // Возвращаем ошибку и вывод как строку return err, string(output) // Возвращаем ошибку и вывод как строку
} }
func createAppFromReleases(releases []Release, repo string, index int) (App, []Package,error) { func createAppFromReleases(releases []Release, repo string, index int,indexCache Index) (App, []Package,error) {
// Получаем информацию о репозитории // Получаем информацию о репозитории
repository, err := getRepositoryInfo(repo) repository, err := getRepositoryInfo(repo)
if err != nil { if err != nil {
@ -525,9 +533,9 @@ func createAppFromReleases(releases []Release, repo string, index int) (App, []P
return App{}, []Package{}, nil return App{}, []Package{}, nil
} }
release := releases[index] release := releases[index]
packages := handleRelease(release) packages := handleRelease(release,indexCache)
if len(packages) == 0 { if len(packages) == 0 {
return createAppFromReleases(releases,repo,index+1) return createAppFromReleases(releases,repo,index+1,indexCache)
//return App{}, []Package{}, nil //return App{}, []Package{}, nil
} }
app := App{ app := App{
@ -555,16 +563,25 @@ func createAppFromReleases(releases []Release, repo string, index int) (App, []P
func main() { func main() {
var apps []App var apps []App
var indexCache Index
var packages map[string][]Package var packages map[string][]Package
packages = make(map[string][]Package) packages = make(map[string][]Package)
var config Config var config Config
file, err := os.Open("config.toml") file, err := os.Open("config.toml")
fileJson,errJson := os.Open("index-v1.json")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
if errJson != nil {
log.Printf("Error opening index cache so cache will not used: %s",errJson)
indexCache = Index{}
}
defer file.Close() defer file.Close()
defer fileJson.Close()
// Parse the TOML file into the config struct // Parse the TOML file into the config struct
if errJson := json.NewDecoder(fileJson).Decode(&indexCache); err != nil {
log.Printf("Error decoding index cache so cache will not used: %s",errJson)
}
if _, err := toml.NewDecoder(file).Decode(&config); err != nil { if _, err := toml.NewDecoder(file).Decode(&config); err != nil {
log.Fatal(err) log.Fatal(err)
} }
@ -591,7 +608,7 @@ for _, source := range config.BinarySources {
var app App var app App
fmt.Println("Creating app object from repository info and apk") fmt.Println("Creating app object from repository info and apk")
app,app_packages, err := createAppFromReleases(releases,repo,0) app,app_packages, err := createAppFromReleases(releases,repo,0,indexCache)
if err != nil { if err != nil {
log.Fatal("Failed to create app from releases: ",err) log.Fatal("Failed to create app from releases: ",err)
} }