diff --git a/cli/recipe.go b/cli/recipe.go index d65ea21d9..dfc596e01 100644 --- a/cli/recipe.go +++ b/cli/recipe.go @@ -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()) }