public static InstallDetails sync(Project project) { Set<PackageManifest> currentManifests = gatherManifests(gatherDependencies(project, ProjectConfig.loadShadow(project))); Set<PackageManifest> targetManifests = gatherManifests(gatherDependencies(project, ProjectConfig.load(project))); Log.L.info("Current packages: {}, target packages: {}", currentManifests.size(), targetManifests.size()); AssetMap current = buildAssetMap(currentManifests); AssetMap target = buildAssetMap(targetManifests); AssetDifference difference = Synchroniser.difference(current, target, Synchroniser.filter(project)); Log.L.info("Files added: {}", difference.getAdd().size()); Log.L.info("Files removed: {}", difference.getRemove().size()); Log.L.info("Files moved: {}", difference.getMoved().size()); remove(project, difference.getRemove()); cleanOldPackageDirs(project.getProjectDir(), difference.getRemove()); move(project, difference.getMoved()); return install(project, difference.getAdd(), targetManifests); }
public static void cleanOldPackageDirs(File folder, ImmutableSet<String> pathsRemoved) { Log.L.debug("Cleaning old directories: {}", pathsRemoved); for (String root : getPackageRoots(pathsRemoved)) { removeEmptyFoldersRecursive(new File(folder, root)); } }
public static InstallDetails install(Project project, ImmutableMap<String, Asset> add, Set<PackageManifest> targetManifests) { Map<String, File> filesByGUID = buildGUIDToUnitypackageMap(targetManifests); HashMultimap<File, String> guidsByFile = HashMultimap.create(); for (Map.Entry<String, Asset> entry : add.entrySet()) { Log.L.info("add " + entry.getKey() + " " + entry.getValue().getPath()); File f = filesByGUID.get(entry.getKey()); Log.L.info("Putting " + f.getPath() + " " + entry.getKey()); guidsByFile.put(f, entry.getKey()); } Set<File> completePackages = Sets.newHashSet(); HashMultimap<File, String> partialPackages = HashMultimap.create(); for (File file : guidsByFile.keys()) { PackageManifest manifest = findManifest(file, targetManifests); if (manifest.getFiles().size() == guidsByFile.get(file).size()) { Log.L.info("Install all {}", file.getName()); completePackages.add(file); } else { Log.L.info("Install partially {}", file.getName()); partialPackages.putAll(file, guidsByFile.values()); } } Log.L.info("Installing {} complete packages, {} partial", completePackages.size(), partialPackages.size()); return new InstallDetails(ImmutableSet.copyOf(completePackages), mergeArchives(project, partialPackages)); }
private static Set<ResolvedDependency> gatherDependencies(Set<ResolvedDependency> deps) { Set<ResolvedDependency> result = Sets.newHashSet(deps); for (ResolvedDependency dep : deps) { result.addAll(gatherDependencies(dep.getChildren())); } return result; } }
public static List<FilteredManifest> filterManifest(ImmutableMap<String, Asset> add, Set<PackageManifest> targetManifests) { Map<String, File> filesByGUID = buildGUIDToUnitypackageMap(targetManifests); HashMultimap<String, String> pathsByFile = HashMultimap.create(); for (Map.Entry<String, Asset> entry : add.entrySet()) { Log.L.info("add " + entry.getKey() + " " + entry.getValue().getPath()); File f = filesByGUID.get(entry.getKey()); Log.L.info("Putting " + f.getPath() + " " + entry.getKey()); pathsByFile.put(f.getAbsolutePath(), entry.getValue().getPath()); pathsByFile.put(f.getAbsolutePath(), entry.getValue().getPath() + ".meta"); } List<FilteredManifest> filtered = Lists.newArrayList(); for (String filePath : pathsByFile.keySet()) { File file = new File(filePath); PackageManifest manifest = findManifest(file, targetManifests); filtered.add(new FilteredManifest(manifest, ImmutableSet.copyOf(pathsByFile.get(filePath)))); } return filtered; }
public static InstallDetails install(Project project, ImmutableMap<String, Asset> add, Set<PackageManifest> targetManifests) { Map<String, File> filesByGUID = buildGUIDToUnitypackageMap(targetManifests); HashMultimap<File, String> guidsByFile = HashMultimap.create(); for (Map.Entry<String, Asset> entry : add.entrySet()) { Log.L.info("add " + entry.getKey() + " " + entry.getValue().getPath()); File f = filesByGUID.get(entry.getKey()); Log.L.info("Putting " + f.getPath() + " " + entry.getKey()); guidsByFile.put(f, entry.getKey()); } Set<File> completePackages = Sets.newHashSet(); HashMultimap<File, String> partialPackages = HashMultimap.create(); for (File file : guidsByFile.keys()) { PackageManifest manifest = findManifest(file, targetManifests); if (manifest.getFiles().size() == guidsByFile.get(file).size()) { Log.L.info("Install all {}", file.getName()); completePackages.add(file); } else { Log.L.info("Install partially {}", file.getName()); partialPackages.putAll(file, guidsByFile.values()); } } Log.L.info("Installing {} complete packages, {} partial", completePackages.size(), partialPackages.size()); return new InstallDetails(ImmutableSet.copyOf(completePackages), mergeArchives(project, partialPackages)); }
private static Set<ResolvedDependency> gatherDependencies(Set<ResolvedDependency> deps) { Set<ResolvedDependency> result = Sets.newHashSet(deps); for (ResolvedDependency dep : deps) { result.addAll(gatherDependencies(dep.getChildren())); } return result; } }
public static InstallDetails sync(Project project) { Set<PackageManifest> currentManifests = gatherManifests(gatherDependencies(project, ProjectConfig.loadShadow(project))); Set<PackageManifest> targetManifests = gatherManifests(gatherDependencies(project, ProjectConfig.load(project))); Log.L.info("Current packages: {}, target packages: {}", currentManifests.size(), targetManifests.size()); AssetMap current = buildAssetMap(currentManifests); AssetMap target = buildAssetMap(targetManifests); AssetDifference difference = Synchroniser.difference(current, target, Synchroniser.filter(project)); Log.L.info("Files added: {}", difference.getAdd().size()); Log.L.info("Files removed: {}", difference.getRemove().size()); Log.L.info("Files moved: {}", difference.getMoved().size()); remove(project, difference.getRemove()); cleanOldPackageDirs(project.getProjectDir(), difference.getRemove()); move(project, difference.getMoved()); return install(project, difference.getAdd(), targetManifests); }
public static void cleanOldPackageDirs(File folder, ImmutableSet<String> pathsRemoved) { Log.L.debug("Cleaning old directories: {}", pathsRemoved); for (String root : getPackageRoots(pathsRemoved)) { removeEmptyFoldersRecursive(new File(folder, root)); } }
private static Set<ResolvedDependency> gatherDependencies(Set<ResolvedDependency> deps) { Set<ResolvedDependency> result = Sets.newHashSet(deps); for (ResolvedDependency dep : deps) { result.addAll(gatherDependencies(dep.getChildren())); } return result; } }
public static List<FilteredManifest> sync(Project project) { Set<PackageManifest> currentManifests = gatherManifests(gatherDependencies(project, ProjectConfig.loadShadow(project))); Set<PackageManifest> targetManifests = gatherManifests(gatherDependencies(project, ProjectConfig.load(project))); Log.L.info("Current packages: {}, target packages: {}", currentManifests.size(), targetManifests.size()); AssetMap current = buildAssetMap(currentManifests); AssetMap target = buildAssetMap(targetManifests); AssetDifference difference = Synchroniser.difference(current, target, Synchroniser.filter(project)); Log.L.info("Files added: {}, {}", difference.getAdd().size(), difference.getAdd().values()); Log.L.info("Files removed: {}, {}", difference.getRemove().size(), difference.getRemove()); Log.L.info("Files moved: {}, {}", difference.getMoved().size(), difference.getMoved()); remove(project, difference.getRemove()); cleanOldPackageDirs(project.getProjectDir(), difference.getRemove()); move(project, difference.getMoved()); return filterManifest(difference.getAdd(), targetManifests); }
public static void cleanOldPackageDirs(File folder, ImmutableSet<String> pathsRemoved) { Log.L.debug("Cleaning old directories: {}", pathsRemoved); for (String root : getPackageRoots(pathsRemoved)) { removeEmptyFoldersRecursive(new File(folder, root)); } }
static Set<ResolvedDependency> gatherDependencies(Project project, ProjectConfig config) { return gatherDependencies(project, config.getRepositories(), config.getDependencies()); }
static Set<ResolvedDependency> gatherDependencies(Project project, ProjectConfig config) { return gatherDependencies(project, config.getRepositories(), config.getDependencies()); }
static Set<ResolvedDependency> gatherDependencies(Project project, ProjectConfig config) { return gatherDependencies(project, config.getRepositories(), config.getDependencies()); }
static Set<ResolvedDependency> gatherDependencies(Project project, Set<String> repositories, Set<String> dependencies) { for (final String r : repositories) { project.getRepositories().ivy(new Action<IvyArtifactRepository>() { @Override public void execute(IvyArtifactRepository ivyArtifactRepository) { ivyArtifactRepository.setUrl(r); } }); } Configuration conf = project.getConfigurations().create("nxtTmp" + count++); for (String id : dependencies) { conf.getDependencies().add(project.getDependencies().create(id)); } return gatherDependencies(conf.getResolvedConfiguration().getFirstLevelModuleDependencies()); }
static Set<ResolvedDependency> gatherDependencies(Project project, Set<String> repositories, Set<String> dependencies) { for (final String r : repositories) { project.getRepositories().ivy(new Action<IvyArtifactRepository>() { @Override public void execute(IvyArtifactRepository ivyArtifactRepository) { ivyArtifactRepository.setUrl(r); } }); } Configuration conf = project.getConfigurations().create("gpTmp" + count++); for (String id : dependencies) { conf.getDependencies().add(project.getDependencies().create(id)); } return gatherDependencies(conf.getResolvedConfiguration().getFirstLevelModuleDependencies()); }
static Set<ResolvedDependency> gatherDependencies(Project project, Set<String> repositories, Set<String> dependencies) { for (final String r : repositories) { project.getRepositories().ivy(new Action<IvyArtifactRepository>() { @Override public void execute(IvyArtifactRepository ivyArtifactRepository) { ivyArtifactRepository.setUrl(r); } }); } Configuration conf = project.getConfigurations().create("nxtTmp" + count++); for (String id : dependencies) { conf.getDependencies().add(project.getDependencies().create(id)); } return gatherDependencies(conf.getResolvedConfiguration().getFirstLevelModuleDependencies()); }