func (c *SwitchAtLeastCommand) Run(args []string) int { if len(args) == 0 { fmt.Printf(FailInGetVersion) return 1 } xcodeList, xcodeError := function.GetXcodeList(function.ApplicationsPath) if xcodeError != nil { fmt.Printf(FailInMakingAListOfXcodes) return 1 } if model.IsShortVersion(args[0]) { v, _ := model.NewShortVersion(args[0]) for i := len(xcodeList) - 1; i >= 0; i-- { if model.EqualsForShortVersion(v, xcodeList[i].Version.Short) || model.LessForShortVersion(v, xcodeList[i].Version.Short) { _, execError := function.ExecXcodeSelectSwitchOutput(xcodeList[i].AppPath + function.PathToDeveloperDirectoryPath) if execError == nil { fmt.Printf(SucceedInSwitching, model.GetShortVersionInString(xcodeList[i].Version.Short), model.GetProductBuildVersionInString(xcodeList[i].Version.ProductBuild)) return 0 } else { fmt.Printf(FailInSwitching, model.GetShortVersionInString(xcodeList[i].Version.Short)) return 1 } } } fmt.Printf(FailInFindingXcodeAtLeast, model.GetShortVersionInString(v)) } else if model.IsProductBuildVersion(args[0]) { v, _ := model.NewProductBuildVersion(args[0]) for i := len(xcodeList) - 1; i >= 0; i-- { if model.EqualsForProductBuildVersion(v, xcodeList[i].Version.ProductBuild) || model.LessForProductBuildVersion(v, xcodeList[i].Version.ProductBuild) { _, execError := function.ExecXcodeSelectSwitchOutput(xcodeList[i].AppPath + function.PathToDeveloperDirectoryPath) if execError == nil { fmt.Printf(SucceedInSwitching, model.GetShortVersionInString(xcodeList[i].Version.Short), model.GetProductBuildVersionInString(xcodeList[i].Version.ProductBuild)) return 0 } else { fmt.Printf(FailInSwitching, model.GetProductBuildVersionInString(xcodeList[i].Version.ProductBuild)) return 1 } } } fmt.Printf(FailInFindingXcodeAtLeast, model.GetProductBuildVersionInString(v)) } else { fmt.Printf(FailInGetVersion) } return 1 }
func (c *SwitchCompatibleCommand) Run(args []string) int { if len(args) == 0 { fmt.Printf(FailInGetVersion) return 1 } xcodeList, xcodeError := function.GetXcodeList(function.ApplicationsPath) if xcodeError != nil { fmt.Printf(FailInMakingAListOfXcodes) return 1 } if model.IsShortVersion(args[0]) { v, _ := model.NewShortVersion(args[0]) excess, excessError := model.GetExcessCompatibleShortVersion(args[0]) if excessError != nil { fmt.Printf(FailInGetVersion) return 1 } for i := len(xcodeList) - 1; i >= 0; i-- { if !model.EqualsForShortVersion(xcodeList[i].Version.Short, v) && model.LessForShortVersion(xcodeList[i].Version.Short, v) { break } if !model.EqualsForShortVersion(xcodeList[i].Version.Short, excess) && model.LessForShortVersion(xcodeList[i].Version.Short, excess) { _, execError := function.ExecXcodeSelectSwitchOutput(xcodeList[i].AppPath + function.PathToDeveloperDirectoryPath) if execError == nil { fmt.Printf(SucceedInSwitching, model.GetShortVersionInString(xcodeList[i].Version.Short), model.GetProductBuildVersionInString(xcodeList[i].Version.ProductBuild)) return 0 } else { fmt.Printf(FailInSwitching, model.GetShortVersionInString(xcodeList[i].Version.Short)) return 1 } } } fmt.Printf(FailInFindingXcodeCompatible, model.GetShortVersionInString(v)) } else if model.IsProductBuildVersion(args[0]) { v, _ := model.NewProductBuildVersion(args[0]) excess, excessError := model.GetExcessCompatibleProductBuildVersion(args[0]) if excessError != nil { fmt.Printf(FailInGetVersion) return 1 } xcodeLists, xcodeError := function.GetXcodeList(function.ApplicationsPath) if xcodeError != nil { fmt.Printf(FailInMakingAListOfXcodes) return 1 } for i := len(xcodeLists) - 1; i >= 0; i-- { if !model.EqualsForProductBuildVersion(xcodeLists[i].Version.ProductBuild, v) && model.LessForProductBuildVersion(xcodeLists[i].Version.ProductBuild, v) { break } if !model.EqualsForProductBuildVersion(xcodeLists[i].Version.ProductBuild, excess) && model.LessForProductBuildVersion(xcodeLists[i].Version.ProductBuild, excess) { _, execError := function.ExecXcodeSelectSwitchOutput(xcodeLists[i].AppPath + function.PathToDeveloperDirectoryPath) if execError == nil { fmt.Printf(SucceedInSwitching, model.GetShortVersionInString(xcodeLists[i].Version.Short), model.GetProductBuildVersionInString(xcodeLists[i].Version.ProductBuild)) return 0 } else { fmt.Println(execError) return 1 } } } fmt.Printf(FailInFindingXcodeCompatible, model.GetProductBuildVersionInString(v)) } else { fmt.Printf(FailInGetVersion) } return 1 }