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