"fmt"
"log"
"os"
+ "strings"
"gerrit.akraino.org/kni/installer/pkg/site"
"github.com/spf13/cobra"
buildPath = fmt.Sprintf("%s/.kni", os.Getenv("HOME"))
}
+ // check if we have a requirements list specified
+ var requirements []string
+ requirementsList, _ := cmd.Flags().GetString("requirements")
+ if len(requirementsList) > 0 {
+ // strip list in array
+ requirements = strings.Split(requirementsList, ",")
+ }
+
// define a site object and proceed with requirements fetch
s := site.New(siteRepo, buildPath)
s.DownloadSite()
- s.FetchRequirements()
+ s.FetchRequirements(requirements)
},
}
rootCmd.AddCommand(fetchRequirementsCmd)
fetchRequirementsCmd.Flags().StringP("build_path", "", "", "Directory to use as build path. If that not exists, the installer will generate a default directory")
-
+ fetchRequirementsCmd.Flags().StringP("requirements", "", "", "Individual requirements list. It needs to be a list of requirements separated by commas. If not supplied, all requirements will be downloaded")
}
}
// using the downloaded site content, fetches (and builds) the specified requirements
-func (s Site) FetchRequirements() {
+func (s Site) FetchRequirements(individualRequirements []string) {
log.Println(fmt.Sprintf("Downloading requirements for %s", s.siteName))
sitePath := fmt.Sprintf("%s/%s", s.buildPath, s.siteName)
// requirements is composed of binary and source
requirementsBits := strings.SplitN(strings.TrimSpace(requirementsLine), ":", 2)
- r := requirements.New(strings.TrimSpace(requirementsBits[0]), strings.TrimSpace(requirementsBits[1]), fmt.Sprintf("%s/requirements", sitePath))
+ binaryName := strings.TrimSpace(requirementsBits[0])
+
+ // if we have individual requirements list, check if we have the requirement on it. Otherwise, skip
+ if len(individualRequirements) > 0 {
+ foundReq := false
+ for _, individualRequirement := range individualRequirements {
+ if individualRequirement == binaryName {
+ foundReq = true
+ break
+ }
+ }
+ if !foundReq {
+ // skip this iteration
+ log.Println(fmt.Sprintf("Binary %s not found in list, skipping", binaryName))
+ continue
+ }
+ }
+ r := requirements.New(binaryName, strings.TrimSpace(requirementsBits[1]), fmt.Sprintf("%s/requirements", sitePath))
r.FetchRequirement()
}