refactor: make ReadApps main API entrypoint

This allows AppsReadFS/AppsReadWeb to be used behind the scenes of this
API for the conditional loading logic. All functions are left as public
for now while we're experimenting.
This commit is contained in:
decentral1se 2021-07-22 14:51:56 +02:00
parent 56cec1580a
commit 381de28e83
No known key found for this signature in database
GPG Key ID: 5E2EF5A63E3718CC

View File

@ -94,6 +94,28 @@ func AppsFSIsLatest() (bool, error) {
return true, nil
}
func ReadApps() (Apps, error) {
apps := make(Apps)
appsFSIsLatest, err := AppsFSIsLatest()
if err != nil {
return nil, err
}
if !appsFSIsLatest {
if err := ReadAppsWeb(&apps); err != nil {
return nil, err
}
return apps, nil
}
if err := ReadAppsFS(&apps); err != nil {
return nil, err
}
return apps, nil
}
func ReadAppsFS(target interface{}) error {
appsJsonFS, err := ioutil.ReadFile(config.APPS_JSON)
if err != nil {
@ -105,36 +127,21 @@ func ReadAppsFS(target interface{}) error {
return nil
}
func ReadAppsWeb() (Apps, error) {
apps := make(Apps)
func ReadAppsWeb(target interface{}) error {
if err := readJson(AppsUrl, &target); err != nil {
return err
}
appsFSIsLatest, err := AppsFSIsLatest()
appsJson, err := json.MarshalIndent(target, "", " ")
if err != nil {
return nil, err
return err
}
if !appsFSIsLatest {
if err := readJson(AppsUrl, &apps); err != nil {
return nil, err
}
appsJson, err := json.MarshalIndent(apps, "", " ")
if err != nil {
return nil, err
}
if err := ioutil.WriteFile(config.APPS_JSON, appsJson, 0644); err != nil {
return nil, err
}
return apps, nil
if err := ioutil.WriteFile(config.APPS_JSON, appsJson, 0644); err != nil {
return err
}
if err := ReadAppsFS(&apps); err != nil {
return nil, err
}
return apps, nil
return nil
}
func SortByAppName(apps Apps) []string {
@ -150,7 +157,7 @@ var recipeListCommand = &cli.Command{
Name: "list",
Aliases: []string{"ls"},
Action: func(c *cli.Context) error {
appSpecs, err := ReadAppsWeb()
apps, err := ReadApps()
if err != nil {
logrus.Fatal(err.Error())
}