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())); }
private void Upload(Model.Project project, DirectoryInfo path, MavenCoordinates artifact) { var file = new FileInfo(Path.Combine(path.FullName, artifact.ExpandedName)); var artifactory = new Model.Artifact(artifact); var repo = GetRepository(project, artifactory); repo.Upload(artifactory.Path, File.ReadAllBytes(file.FullName)).Run(); }
private IRepository GetRepository(Model.Project project, Model.Artifact artifact) { if (artifact.ArtifactId == "common-modules.library") { return(StandardLib); } var isFlow = new Regex(@"\.flow\.[^\.]+\." + project.ArtifactId); var isProject = new Regex(@"\.project\.[^\.]+$"); if (isFlow.IsMatch(artifact.GroupId) || isProject.IsMatch(artifact.GroupId)) { return(CustomerLib); } return(Sandbox); }
public void Download(Model.Project coordinates, DirectoryInfo workspace) { var latest = ResolveLatestVariable(coordinates); var projectPom = Download(GetRepository(coordinates, latest), latest.Path, BuildTargetPath(workspace, latest)); if (projectPom == null) { throw new ArgumentException(latest + " does not exist"); } var project = PomReader.Parse(projectPom); var toVisit = new List <MavenCoordinates>(project.Dependencies); var flowDependencies = new List <MavenCoordinates>(); var alreadyAdded = new HashSet <MavenCoordinates>(project.Dependencies); while (toVisit.Count > 0) { var first = new Model.Artifact(toVisit[0]); toVisit.RemoveAt(0); var flowPom = Download(GetRepository(coordinates, first), first.Path, BuildTargetPath(workspace, first)); if (flowPom == null) { //555 continue; } var flow = PomReader.Parse(flowPom); foreach (var dep in flow.Dependencies) { if (!alreadyAdded.Contains(dep)) { toVisit.Add(dep); flowDependencies.Add(dep); } } } var overallPom = PomReader.AddDependencies(projectPom, flowDependencies); File.WriteAllText(Path.Combine(workspace.FullName, "pom.xml"), overallPom); }
private string BuildTargetPath(DirectoryInfo workspace, Model.Artifact coordinates) { return(Path.Combine(workspace.FullName, coordinates.LocalPath.Replace('/', Path.DirectorySeparatorChar))); }