Exemplo n.º 1
0
 IEnumerable<ICommandOutput> AddRemote()
 {
     var repositories = ConfigurationManager.LoadRemoteRepositories();
     int position = GetNewRemotePosition(repositories);
     repositories[Name] = new RemoteRepository
     {
         Href = Href,
         Name = Name,
         Priority = position
     };
     ConfigurationManager.SaveRemoteRepositories(repositories);
     yield return new GenericMessage(string.Format("Remote repository '{0}' added.", Name));
 }
Exemplo n.º 2
0
        void HandlePrioritySetting(RemoteRepositories repositories, RemoteRepository remote)
        {
            if (!_position.HasValue || remote.Priority == _position)
                return;

            var prioHasIncreased = remote.Priority > _position;

            var otherRepositories = repositories.Values.Except(remote.ToEnumerable());

            var vars = prioHasIncreased
                                        ? new
                                        {
                                            RelevantRepositories = otherRepositories.OrderBy(r => r.Priority).ToList(),
                                            SkipCondition = new Func<RemoteRepository, bool>(r => r.Priority < _position),
                                            PriorityMutator = new Func<int, int>(i => i + 1)
                                        }
                                        : new
                                        {
                                            RelevantRepositories = otherRepositories.OrderByDescending(r => r.Priority).ToList(),
                                            SkipCondition = new Func<RemoteRepository, bool>(r => r.Priority > _position),
                                            PriorityMutator = new Func<int, int>(i => i - 1)
                                        };

            if (!vars.RelevantRepositories.Any(r => r.Priority == _position))
                return;

            var lastPriority = (int)_position;

            foreach (var repository in vars.RelevantRepositories.SkipWhile(vars.SkipCondition))
            {
                if (repository.Priority == lastPriority)
                    repository.Priority = (lastPriority = vars.PriorityMutator(lastPriority));
                else
                    break;
            }

            remote.Priority = _position.Value;
        }
 public RemoteRepositoryMessage(ICommand sourceCommand, string name, RemoteRepository remoteRepository)
 {
     Name = name;
     RemoteRepository = remoteRepository;
     Source = sourceCommand;
 }