IEnumerable<ICommandOutput> RemoteExists() { _remotes = ConfigurationManager.Load<RemoteRepositories>(); if (_remotes.ContainsKey(Name) == false) yield return new UnknownRemoteName(Name); else _targetRemote = _remotes[Name]; }
IEnumerable<ICommandOutput> AddNew(RemoteRepositories repositories) { var repositoryInput = Href ?? Name; var repository = Factories.Select(x => x.FromUserInput(repositoryInput, _credentials)).NotNull().FirstOrDefault(); if (repository == null) { yield return new UnknownEndpointType(repositoryInput); yield break; } List<RemoteRepositoryEndpoint> publishTokens; if (Publish != null) { var publishRepository = Factories.Select(x => x.FromUserInput(Publish,_credentials)).NotNull().FirstOrDefault(); if (publishRepository == null) { // TODO: add tests to check that yield return new UnknownEndpointType(Publish); yield break; } publishTokens = new List<RemoteRepositoryEndpoint> { new RemoteRepositoryEndpoint { Token = publishRepository.Token, Username = Username, Password = Password } }; } else { var supportPublishing = repository.Feature<ISupportPublishing>(); publishTokens = (supportPublishing != null) ? new List<RemoteRepositoryEndpoint> { new RemoteRepositoryEndpoint { Token = repository.Token, Username = Username, Password = Password } } : new List<RemoteRepositoryEndpoint>(); } int position = GetNewRemotePriority(repositories); repositories[Name] = new RemoteRepository { FetchRepository = new RemoteRepositoryEndpoint { Token = repository.Token, Username = Username, Password = Password }, PublishRepositories = publishTokens, Name = Name, Priority = position }; ConfigurationManager.Save(repositories); yield return new RemoteAdded(Name); }
void HandlePrioritySetting(RemoteRepositories repositories, RemoteRepository remote) { if (!Priority.HasValue || remote.Priority == Priority) return; MoveRepositoriesToHigherPriority(Priority.Value, repositories); remote.Priority = Priority.Value; }