/// <summary>
        /// Builds a <see cref="FilterDefinition{BsonDocument}" /> corresponding to the <see cref="CommitVersion" /> supplied
        /// </summary>
        /// <param name="commit">A <see cref="CommitVersion" /></param>
        /// <returns>A <see cref="FilterDefinition{BsonDocument}" /> corresponding to the <see cref="CommitVersion" /></returns>
        public static FilterDefinition <BsonDocument> ToFilter(this CommitVersion commit)
        {
            var builder = Builders <BsonDocument> .Filter;
            var filter  = builder.Gte(VersionConstants.COMMIT, commit.Value);

            return(filter);
        }
Пример #2
0
 /// <inheritdoc />
 public Commits FetchFrom(EventSourceKey eventSourceKey, CommitVersion commitVersion)
 {
     using (var es = _database.GetContext())
     {
         return(BuildCommits(es.Commits.Include(c => c.Events).Where(c => c.Id >= (long)commitVersion.Value && c.EventSourceId == eventSourceKey.Id.Value && c.EventSourceArtifact == eventSourceKey.Artifact.Value).OrderBy(c => c.Id)));
     }
 }
Пример #3
0
        public string SetPackageJsonNpmVersion(Dependency dependency, CommitVersion commit, string folder)
        {
            var pathPackageJson = Path.Combine(folder, dependency.pathPackageSettings);

            var jsn = StringUtils.ReadAllText(pathPackageJson);

            var version = commit.ToString();

            var jobject = JsonConvert.DeserializeObject(jsn) as JObject;

            var dependenciesArray = jobject["dependencies"];

            var divisor = packageName.Split('_');

            var packageJson = $"@{divisor[0]}/{divisor[1]}";

            if (dependenciesArray != null && dependenciesArray.HasValues)
            {
                var packageExists = dependenciesArray.Any(s => ((JProperty)s).Name.Equals(packageJson));
                if (packageExists)
                {
                    var tkn = (JProperty)dependenciesArray.First(s => ((JProperty)s).Name.Equals(packageJson));
                    tkn.Value = $"^{version}";
                }
            }

            var devDependenciesArray = jobject["devDependencies"];

            if (devDependenciesArray != null && devDependenciesArray.HasValues)
            {
                var packageExists = devDependenciesArray.Any(s => ((JProperty)s).Name.Equals(packageJson));
                if (packageExists)
                {
                    var tkn = (JProperty)devDependenciesArray.First(s => ((JProperty)s).Name.Equals(packageJson));
                    tkn.Value = $"^{version}";
                }
            }

            var peerDependenciesArray = jobject["peerDependencies"];

            if (peerDependenciesArray != null && peerDependenciesArray.HasValues)
            {
                var packageExists = peerDependenciesArray.Any(s => ((JProperty)s).Name.Equals(packageJson));
                if (packageExists)
                {
                    var tkn = (JProperty)peerDependenciesArray.First(s => ((JProperty)s).Name.Equals(packageJson));
                    tkn.Value = $"^{version}";
                }
            }


            return(jobject.ToString());
        }
Пример #4
0
        public string SetCsProjNugetVersion(Dependency dependency, CommitVersion commit, string folder)
        {
            var pathCsproj = Path.Combine(folder, dependency.pathPackageSettings);

            var version = commit.ToString();
            var xmlDoc  = new XmlDocument();

            xmlDoc.Load(pathCsproj);

            for (int i = 0; i < xmlDoc.DocumentElement.ChildNodes.Count; i++)
            {
                var node = xmlDoc.DocumentElement.ChildNodes.Item(i);
                if (node.Name.Equals("ItemGroup"))
                {
                    var nodes = node.ChildNodes;
                    for (int x = 0; x < nodes.Count; x++)
                    {
                        var nodePackage = nodes.Item(x);
                        if (nodePackage.Name.Equals("PackageReference"))
                        {
                            var attributes = nodePackage.Attributes;

                            var attrInclude = attributes["Include"];

                            if (attrInclude != null && attrInclude.Value.Equals(packageName))
                            {
                                attributes["Version"].Value = $"{version}";
                            }
                        }
                    }
                }
            }


            return(ToXmlString(xmlDoc));
        }
Пример #5
0
 /// <inheritdoc />
 public Commits FetchFrom(EventSourceKey eventSource, CommitVersion commitVersion)
 {
     return(GetCommits(QueryCommitsFor(_ => _.EventSourceId == eventSource.Id.Value && _.EventSourceArtifact == eventSource.Artifact.Value && _.CommitNumber >= commitVersion.Value),
                       $"Fetching commits on for event source { eventSource.Id.Value }  of artifact:{ eventSource.Artifact.Value} after {commitVersion.ToString()}"));
 }
Пример #6
0
 /// <inheritdoc />
 public Commits FetchFrom(EventSourceKey key, CommitVersion commitVersion)
 {
     return(new Commits(_commits.Where(c => c.Source.Key == key && c.Source.Version.Commit >= commitVersion).ToList()));
 }
 /// <inheritdoc />
 public Commits FetchFrom(EventSourceKey eventSource, CommitVersion commitVersion)
 {
     ThrowIfDisposed();
     return(_event_committer_and_fetcher.FetchFrom(eventSource, commitVersion));
 }
Пример #8
0
 /// <inheritdoc />
 public Commits FetchFrom(EventSourceKey eventSourceKey, CommitVersion commitVersion)
 {
     return(new Commits(FetchAllCommits().Where(_ => _.Source.Version.Commit >= commitVersion && _.Source.Artifact.Equals(eventSourceKey.Artifact) && _.Source.EventSource.Equals(eventSourceKey.Id))));
 }
Пример #9
0
 /// <inheritdoc />
 public Commits FetchFrom(EventSourceKey eventSource, CommitVersion commitVersion)
 {
     return(_eventCommitterAndFetcher.FetchFrom(eventSource, commitVersion));
 }
Пример #10
0
        private bool UpdateGithub(Dependency dependency, CommitVersion version, Action <string> eventMessage)
        {
            var gh = new GitHubRepo(new StringUtils().SetGithubToken(dependency.GithubHttp, token, userGithub), this.branch, this.userGithub, this.mail);

            string folder;

            try
            {
                folder = gh.Clone();
            }
            catch (Exception e)
            {
                eventMessage?.Invoke($"{dependency.PackageName} fallo al clonar con la rama {branch}  desde {dependency.GithubHttp}");
                eventMessage?.Invoke($"este es el mensaje de error:");
                eventMessage?.Invoke($"{e.Message}");
                return(false);
            }

            eventMessage?.Invoke($"-------------------------------------------------------------------------------");
            eventMessage?.Invoke($"{dependency.PackageName} es clonado en la carpeta temporal  desde {dependency.GithubHttp}");
            eventMessage?.Invoke($"-------------------------------------------------------------------------------");
            eventMessage?.Invoke($"{folder}");
            eventMessage?.Invoke($"-------------------------------------------------------------------------------");
            eventMessage?.Invoke($" Desde url Github : {dependency.GithubHttp}");
            eventMessage?.Invoke($"-------------------------------------------------------------------------------");



            string contentFile;

            eventMessage?.Invoke($"Se obtiene {dependency.pathPackageSettings}");
            eventMessage?.Invoke($"-------------------------------------------------------------------------------");
            eventMessage?.Invoke($"-------------------------------------------------------------------------------");
            if (packageType == PackageType.npm)
            {
                contentFile = SetPackageJsonNpmVersion(dependency, version, folder);
            }
            else
            {
                contentFile = SetCsProjNugetVersion(dependency, version, folder);
            }
            eventMessage?.Invoke($"{dependency.pathPackageSettings} procesado");

            Exception exception = null;

            var intentos = 0;

            while (intentos <= 3)
            {
                try
                {
                    gh.SaveFile(dependency.pathPackageSettings, $"{packageName}.{version}", contentFile);
                }
                catch (Exception exc)
                {
                    if (exc.Message.ToLower().Contains("nothing to commit"))
                    {
                        break;
                    }
                    exception = exc;
                    Thread.Sleep(2000);
                    gh.Cloned = string.Empty;
                    intentos++;
                    try
                    {
                        folder = gh.Clone();
                    }
                    catch (Exception e)
                    {
                        eventMessage?.Invoke($"{dependency.PackageName} fallo al clonar con la rama {branch}  desde {dependency.GithubHttp}");
                        eventMessage?.Invoke($"este es el mensaje de error:");
                        eventMessage?.Invoke($"{e.Message}");
                    }



                    if (packageType == PackageType.npm)
                    {
                        contentFile = SetPackageJsonNpmVersion(dependency, version, folder);
                    }
                    else
                    {
                        contentFile = SetCsProjNugetVersion(dependency, version, folder);
                    }

                    eventMessage?.Invoke($"Se limpia carpeta temporal para reintento = {intentos}, mensaje  = {exc.Message}");
                }
            }
            if (exception != null)
            {
                throw exception;
            }


            eventMessage?.Invoke($"El paquete {dependency.PackageName} ha actualizado {packageName} a {version}");
            return(true);
        }
Пример #11
0
 public Commits FetchFrom(EventSourceKey eventSourceKey, CommitVersion commitVersion)
 {
     return(new Commits(new CommittedEventStream[0]));
 }
Пример #12
0
 /// <inheritdoc />
 public Commits FetchFrom(EventSourceKey eventSourceKey, CommitVersion commitVersion)
 {
     return(FindCommitsWithSorting(eventSourceKey.ToFilter() & commitVersion.ToFilter()));
 }