// downloading templates from github and putting them into homedir func getTempaltes(tempDir string) error { common.PrintlnL0("Checking templates in %s", tempDir) var tv templateDefinition err := fetchJSON(strings.Replace(templatePath, "{{.branch}}", flagBranch, -1), nil, &tv) if err != nil { return err } // is there a local copy? if _, err := os.Stat(filepath.Join(tempDir, "templates.json")); os.IsNotExist(err) { // no file. downloading common.PrintlnL1("No local templates found. Downloading now.") err := os.MkdirAll(tempDir, 0777) if err != nil { return err } err = downloadTemplates(tempDir, tv) if err != nil { return err } } // load the local json templatesLocal, err := ioutil.ReadFile(filepath.Join(tempDir, "templates.json")) if err != nil { return err } var localTv templateDefinition err = json.Unmarshal(templatesLocal, &localTv) if err != nil { return err } // compare if localTv.Version != tv.Version { common.PrintlnL2("Newer templates found. Downloading them now") // they are different, we need to download the new ones err = downloadTemplates(tempDir, tv) if err != nil { return err } } else { common.PrintlnL1("Local templates are up to date") } return nil }
func Detect(rootDir string) (packs.Pack, error) { ruby := ruby.Pack{} detectors := []packs.Detector{ruby.Detector()} var packs []packs.Pack for _, d := range detectors { if d.Detect(rootDir) { packs = append(packs, d.GetPack()) common.PrintlnL0("Found %s application", d.GetPack().Name()) } } if len(packs) == 0 { return nil, fmt.Errorf("Could not detect any of the supported frameworks") } else if len(packs) > 1 { return nil, fmt.Errorf("More than one framework detected") } else { return packs[0], nil } }