bug fixes
This commit is contained in:
parent
b937d62cc2
commit
241b42fc56
2 changed files with 56 additions and 10 deletions
11
example.toml
Normal file
11
example.toml
Normal 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
55
main.go
|
@ -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,12 +434,20 @@ 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
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue