private List <MavenCoordinates> Verify(MavenCoordinates coordinates, OverwriteOption overwrite) { if (overwrite == OverwriteOption.Replace) { return(new List <MavenCoordinates> { coordinates }); } var artifact = new Model.Artifact(coordinates); var search = Artifactory.Search() .ArtifactsByGavc() .GroupId(coordinates.GroupId) .ArtifactId(coordinates.ArtifactId) .Version(coordinates.Version); var run = search.Run(); if (run.Artifacts != null && run.Artifacts.Count > 0) { if (overwrite == OverwriteOption.Abort) { throw new ArgumentException(artifact + " already exists"); } else if (overwrite == OverwriteOption.AddNew) { Logger.Info(coordinates + " already exist. Skipping upload."); return(new List <MavenCoordinates>()); } } return(new List <MavenCoordinates> { coordinates });; }
public Model.Artifact ResolveLatestVariable(Model.Project coordinates) { var artifact = new Model.Artifact(coordinates.GroupId, coordinates.ArtifactId, coordinates.Version); if (artifact.Version != "latest") { return(artifact); } var search = Artifactory.Search() .ArtifactsByGavc() .GroupId(coordinates.GroupId) .ArtifactId(coordinates.ArtifactId); var run = search.Run(); var maxVersion = run.Artifacts .Select(a => Model.Artifact.ParseArtifactoryPath(a.Uri.ToString())) .Select(a => new Version(a.Version)) .Max(); if (maxVersion == null) { throw new ArgumentException("There is no project matching " + coordinates); } return(new Model.Artifact(coordinates.GroupId, coordinates.ArtifactId, maxVersion.ToString())); }
public async Task <HookResponse> Hook([FromBody] HookRequest request) { var words = request.Text.Trim().Split(' '); if (words.Length != 2) { return(new HookResponse { Text = $"You must specify packages version. Example: \"{request.TriggerWord} 2.6.4\"" }); } var packageVersion = words.Last(); var options = _configuration.GetSection("artifactory").Get <ArtifactoryOptions>(); var artifactory = new Artifactory(options.Host, options.User, options.Password); var searchQueryBuilds = options.Packages.Select(p => { Action <ISearchQueryBuilder> action = (ISearchQueryBuilder q) => q.WhereName().Match($"{p}*{packageVersion}*"); return(action); }).ToArray(); var artifactsList = await artifactory.Search() .Or(searchQueryBuilds) .Build() .Execute(); var artifacts = artifactsList.Results.Select(a => new ArtifactModel(a, options.PackageNamePattern, ":white_check_mark:")) .GroupBy(a => a.Name) .Select(gr => gr.OrderByDescending(it => it.Version).First()) .ToList(); foreach (var notFoundPackage in options.Packages.Where(p => !artifacts.Any(a => a.Name == p))) { artifacts.Add(new ArtifactModel(notFoundPackage, ":x:")); } return(new HookResponse { Text = GetTable(artifacts) }); }
public List <Model.Artifact> ListProjects() { var search = Artifactory.Search() .ArtifactsByGavc() .GroupId("com.forcam.lib.project.*"); var run = search.Run(); if (run.Artifacts == null) { Logger.Error(run.Response.ErrorMessage); return(new List <Model.Artifact>()); } return(run.Artifacts .Select(a => Model.Artifact.ParseArtifactoryPath(a.Uri.ToString())) .ToList()); }