Пример #1
0
        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
            });;
        }
Пример #2
0
        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()));
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
 private string BuildTargetPath(DirectoryInfo workspace, Model.Artifact coordinates)
 {
     return(Path.Combine(workspace.FullName, coordinates.LocalPath.Replace('/', Path.DirectorySeparatorChar)));
 }