bug fixes

This commit is contained in:
doesnm 2025-05-25 10:59:17 +00:00
parent b937d62cc2
commit 241b42fc56
2 changed files with 56 additions and 10 deletions

11
example.toml Normal file
View file

@ -0,0 +1,11 @@
name="Doesnm Repo"
description="Repository for testing fdroidgo"
address="http://localhost:8000"
icon="icon.png"
keystore_path="keystore.p12"
keystore_password=""
keystore_alias=""
binarySources = [
"github.com/owner/repo" # Currently only github are supported
]
github_token="" # Recommended because github ratelimits

55
main.go
View file

@ -22,6 +22,7 @@ import (
"path/filepath"
"net/url"
"path"
"flag"
)
type Repo struct {
@ -78,6 +79,7 @@ type Config struct {
KeyStorePassword string `toml:"keystore_password"`
KeyStoreAlias string `toml:"keystore_alias"`
BinarySources []string `toml:"binarySources"`
GithubToken string `toml:"github_token"`
}
type User struct {
@ -253,6 +255,12 @@ func processAPK(filePath string,indexCache Index) Package {
for _, pkg := range pkgs {
if pkg.ApkName == filePath {
log.Printf("Warning: using %s metadata from cache",filePath)
for _, app := range indexCache.Apps {
if app.PackageName == pkg.PackageName {
pkg.ApplicationName = app.Name
break
}
}
return pkg
}
}
@ -426,9 +434,17 @@ packages = append(packages,packageInfo)
return packages
}
func getReleases(repo string) ([]Release, error) {
func getReleases(repo string,config Config) ([]Release, error) {
url := fmt.Sprintf("https://api.github.com/repos/%s/releases", repo)
resp, err := http.Get(url)
req, err := http.NewRequest("GET",url,nil)
if err != nil {
return nil, err
}
if config.GithubToken != "" {
req.Header.Set("Authorization", "token "+config.GithubToken)
}
client := http.Client{}
resp,err := client.Do(req)
if err != nil {
return nil,err
}
@ -450,10 +466,18 @@ func getReleases(repo string) ([]Release, error) {
}
func getRepositoryInfo(repo string) (Repository, error) {
func getRepositoryInfo(repo string,config Config) (Repository, error) {
fmt.Println("Fetching repository info")
url := fmt.Sprintf("https://api.github.com/repos/%s", repo)
resp, err := http.Get(url)
req, err := http.NewRequest("GET",url,nil)
if err != nil {
return Repository{}, err
}
if config.GithubToken != "" {
req.Header.Set("Authorization", "token "+config.GithubToken)
}
client := &http.Client{}
resp,err := client.Do(req)
if err != nil {
return Repository{}, err
}
@ -521,9 +545,9 @@ func signJarWithJarsigner(jarFile string, keystore string, password string, alia
return err, string(output) // Возвращаем ошибку и вывод как строку
}
func createAppFromReleases(releases []Release, repo string, index int,indexCache Index) (App, []Package,error) {
func createAppFromReleases(releases []Release, repo string, index int,indexCache Index,config Config) (App, []Package,error) {
// Получаем информацию о репозитории
repository, err := getRepositoryInfo(repo)
repository, err := getRepositoryInfo(repo,config)
if err != nil {
return App{}, []Package{}, err
}
@ -535,8 +559,14 @@ func createAppFromReleases(releases []Release, repo string, index int,indexCache
release := releases[index]
packages := handleRelease(release,indexCache)
if len(packages) == 0 {
return createAppFromReleases(releases,repo,index+1,indexCache)
return createAppFromReleases(releases,repo,index+1,indexCache,config)
//return App{}, []Package{}, nil
}
//fmt.Printf("Debug: ",repository.License)
if repository.License == nil {
repository.License = &License {
SPDXID: "",
}
}
app := App{
AuthorName: release.Author.Login,
@ -567,7 +597,12 @@ func main() {
var packages map[string][]Package
packages = make(map[string][]Package)
var config Config
file, err := os.Open("config.toml")
configPath := flag.String("config", "config.toml", "Path to the configuration file")
// Parse the command-line flags
flag.Parse()
file, err := os.Open(*configPath)
fileJson,errJson := os.Open("index-v1.json")
if err != nil {
log.Fatal(err)
@ -597,7 +632,7 @@ for _, source := range config.BinarySources {
// Получаем релизы для репозитория
fmt.Println("Fetching releases")
releases, err := getReleases(repo)
releases, err := getReleases(repo,config)
if err != nil {
fmt.Printf("Error fetching releases for %s: %v\n", repo, err)
os.Exit(1)
@ -608,7 +643,7 @@ for _, source := range config.BinarySources {
var app App
fmt.Println("Creating app object from repository info and apk")
app,app_packages, err := createAppFromReleases(releases,repo,0,indexCache)
app,app_packages, err := createAppFromReleases(releases,repo,0,indexCache,config)
if err != nil {
log.Fatal("Failed to create app from releases: ",err)
}