Esempio n. 1
0
 IEnumerable<ICommandOutput> RemoteExists()
 {
     _remotes = ConfigurationManager.Load<RemoteRepositories>();
     if (_remotes.ContainsKey(Name) == false)
         yield return new UnknownRemoteName(Name);
     else
         _targetRemote = _remotes[Name];
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        void HandlePrioritySetting(RemoteRepositories repositories, RemoteRepository remote)
        {
            if (!Priority.HasValue || remote.Priority == Priority)
                return;

            MoveRepositoriesToHigherPriority(Priority.Value, repositories);

            remote.Priority = Priority.Value;
        }