// InstallWithBrewIfNeeded ... func InstallWithBrewIfNeeded(tool string) error { if err := chekWithBrewProgramInstalled(tool); err != nil { args := []string{"install", tool} if out, err := bitrise.RunCommandAndReturnCombinedStdoutAndStderr("brew", args...); err != nil { log.Infof("%s", out) return err } } log.Info(" * " + colorstring.Green("[OK] ") + "Dependency (" + tool + ") installed") return nil }
// CheckIsXcodeCLTInstalled ... func CheckIsXcodeCLTInstalled() error { progInstallPth, err := CheckProgramInstalledPath("xcodebuild") if err != nil { fmt.Println() log.Warn("It seems that the Xcode Command Line Tools are not installed on your system.") log.Infoln("You can install it by running the following command in your Terminal:") log.Infoln("xcode-select --install") log.Warn("Once the installation is finished you should call the bitrise setup again.") return err } xcodeSelectPth, err := bitrise.RunCommandAndReturnStdout("xcode-select", "-p") if err != nil { log.Infoln("") return errors.New("Failed to get Xcode path") } isFullXcodeAvailable := false verStr, err := bitrise.RunCommandAndReturnCombinedStdoutAndStderr("xcodebuild", "-version") if err != nil { // No full Xcode available, only the Command Line Tools // verStr is something like "xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance" isFullXcodeAvailable = false } else { // version OK - full Xcode available // we'll just format it a bit to fit into one line isFullXcodeAvailable = true verStr = strings.Join(strings.Split(verStr, "\n"), " | ") } log.Infoln(" * "+colorstring.Green("[OK]")+" xcodebuild path :", progInstallPth) if !isFullXcodeAvailable { log.Infoln(" version (xcodebuild) :", colorstring.Yellowf("%s", verStr)) } else { log.Infoln(" version (xcodebuild) :", verStr) } log.Infoln(" active Xcode (Command Line Tools) path (xcode-select --print-path) :", xcodeSelectPth) if !isFullXcodeAvailable { log.Warn(colorstring.Yellowf("%s", "No Xcode found, only the Xcode Command Line Tools are available!")) log.Warn(colorstring.Yellowf("%s", "Full Xcode is required to build, test and archive iOS apps!")) } return nil }