public Project GetProject(ProjectDescriptor dependency)
        {
            // check whether we've already downloaded the project
            Project cachedProject = this.TryGetDownloadedProject(dependency);

            if (cachedProject != null)
            {
                return(cachedProject);
            }

            // download the project
            FileLocation cacheLocation = dependency.cacheLocation;
            string       filePath      = cacheLocation.path;

            dependency.syncher.pull(dependency.cacheLocation, new Version(dependency.version.GetValue()));
            // parse the project
            Project project = this.projectParser.OpenProject(filePath);

            // save the project and return it
            this.projectsByPath[cacheLocation.path] = project;
            return(project);
        }
        public Project TryGetDownloadedProject(ProjectDescriptor dependency)
        {
            // check whether we've already downloaded the project
            FileLocation cacheLocation = dependency.cacheLocation;

            if (cacheLocation.server == null && this.projectsByPath.ContainsKey(cacheLocation.path))
            {
                return(this.projectsByPath[cacheLocation.path]);
            }
            string filePath = cacheLocation.path;

            // check whether the project exists
            if (this.projectParser.ProjectExists(filePath))
            {
                // parse the project
                Project project = this.projectParser.OpenProject(filePath);
                // save the project and return it
                this.projectsByPath[cacheLocation.path] = project;
                return(project);
            }
            return(null);
        }
 public void PutProject(FileLocation location, Project project)
 {
     this.projectsByPath[location.path] = project;
 }
 public ProjectSourceHistoryRepository CopyTo(FileLocation destination, Version version)
 {
     throw new NotImplementedException();
 }
 public void push(FileLocation localLocation, Version version)
 {
     throw new NotImplementedException("pushing to a git repo isn't implemented yet");
 }