/// <summary> /// Start doing whatever is needed for the supported type of action. /// </summary> /// <returns>'true' if the caller expects the main window to be shown, otherwise 'false'.</returns> public void StartWorking(Dictionary <string, string> commandLineArgs) { // "obtain"; // -p <$fwroot> _pathToRepository = commandLineArgs[CommandLineProcessor.projDir]; CloneResult result; using (var form = new Form()) { var getSharedProjectModel = new GetSharedProjectModel(); result = getSharedProjectModel.GetSharedProjectUsing(form, _pathToRepository, null, ProjectFilter, ChorusHubQuery, _pathToRepository, Utilities.OtherRepositories, CommonResources.kHowToSendReceiveExtantRepository); } if (result == null || // Not sure it can be null, but I (RBR) have a null ref crash report (LT-15094) string.IsNullOrWhiteSpace(result.ActualLocation) || // Not sure it can be null, but I (RBR) have a null ref crash report (LT-15094) result.CloneStatus != CloneStatus.Created) { return; } _currentStrategy = GetCurrentStrategy(result.ActualLocation); //If the repository has 0 commits neither the Project or Lift filters will identify it and the strategy will be null if (_currentStrategy == null || _currentStrategy.IsRepositoryEmpty(result.ActualLocation)) { Directory.Delete(result.ActualLocation, true); // Don't want the newly created empty folder to hang around and mess us up! MessageBox.Show(CommonResources.kEmptyRepoMsg, CommonResources.kRepoProblem); return; } _currentStrategy.FinishCloning(commandLineArgs, result.ActualLocation, null); }
/// <summary> /// Start doing whatever is needed for the supported type of action. /// </summary> public void StartWorking(Dictionary <string, string> commandLineArgs) { // -p <$fwroot>\foo where 'foo' is the project folder name var pOption = commandLineArgs["-p"]; var otherReposDir = Path.Combine(pOption, Utilities.OtherRepositories); if (!Directory.Exists(otherReposDir)) { Directory.CreateDirectory(otherReposDir); } var desiredCloneLocation = Utilities.LiftOffset(pOption); CloneResult result; using (var form = new Form()) { var getSharedProjectModel = new GetSharedProjectModel(); result = getSharedProjectModel.GetSharedProjectUsing(form, otherReposDir, // Folder to put the clone in desiredCloneLocation, // Desired location for new clone ProjectFilter, // Lift repo filter HubQuery, // If it goes to Chorus Hub, use this filter commandLineArgs["-projDir"], // <$fwroot> main project folder, used to find all main project repo ids. Utilities.OtherRepositories, // subfolder of each FW project folder, in which to look for additional repo ids. CommonResources.kHowToSendReceiveExtantRepository); // Some message to use to let user know a repo exists. } if (result.CloneStatus != CloneStatus.Created) { return; } if (IsRepositoryEmpty(result.ActualLocation)) { Directory.Delete(result.ActualLocation, true); // Don't want the newly created empty folder to hang around and mess us up! MessageBox.Show(CommonResources.kEmptyRepoMsg, CommonResources.kRepoProblem); return; } FinishCloning(commandLineArgs, result.ActualLocation, desiredCloneLocation); // May, or may not, exist. }