public static PackageManifest generateManifest(Project project, FileTree tree, Package pack) { Log.L.debug("Generating manifest for {} files", tree.getFiles().size()); // Relativize the paths to the project root, // so they start 'Assets/...". Path baseURL = Paths.get(project.getProjectDir().getPath()); PackageManifest manifest = new PackageManifest(pack); for (File file : tree.getFiles()) { String guid = getGUIDForAsset(file); String md5 = generateMD5(file); Path path = baseURL.relativize(file.toPath()); manifest.add(guid, path, md5); } return manifest; }
public static Map<String, File> buildGUIDToUnitypackageMap(Set<PackageManifest> manifests) { Map<String, File> result = Maps.newHashMap(); for (PackageManifest manifest : manifests) { for (Map.Entry<String, Asset> entry : manifest.getFiles().entrySet()) { if (!result.containsKey(entry.getKey())) { result.put(entry.getKey(), manifest.getUnitypackage()); } } } return result; }
static Set<PackageManifest> gatherManifests(Set<ResolvedDependency> deps) { Set<PackageManifest> manifests = Sets.newHashSet(); for (ResolvedDependency dep : deps) { File manifest = null; File unitypackage = null; for (ResolvedArtifact art : dep.getModuleArtifacts()) { if (art.getExtension().equals("manifest")) { manifest = art.getFile(); } else if (art.getExtension().equals("unitypackage")) { unitypackage = art.getFile(); } } if (null != manifest && null != unitypackage) { PackageManifest p = PackageManifest.load(manifest); p.setUnityPackage(unitypackage); manifests.add(p); } else { logger.error("Malformed package", manifest, unitypackage); } } return manifests; }
static AssetMap buildAssetMap(Set<PackageManifest> manifests) { AssetMap result = new AssetMap(); for (PackageManifest p : manifests) { result.putAll(p.getFiles()); } return result; }
private static PackageManifest findManifest(File by, Set<PackageManifest> manifests) { for (PackageManifest manifest : manifests) { if (manifest.getUnitypackage().equals(by)) { return manifest; } } throw new IllegalArgumentException("Cannot find manifest for " + by); }
@TaskAction public void generateManifest() throws IOException { PackageManifest.save(generateManifest(getProject(), packageFiles, pack), manifest); }
static Set<PackageManifest> gatherManifests(Set<ResolvedDependency> deps) { Set<PackageManifest> manifests = Sets.newHashSet(); for (ResolvedDependency dep : deps) { File manifest = null; File unitypackage = null; for (ResolvedArtifact art : dep.getModuleArtifacts()) { if (art.getExtension().equals("manifest")) { manifest = art.getFile(); } else if (art.getExtension().equals("unitypackage")) { unitypackage = art.getFile(); } } if (null != manifest && null != unitypackage) { PackageManifest p = PackageManifest.load(manifest); p.setUnityPackage(unitypackage); manifests.add(p); } else { logger.error("Malformed package", manifest, unitypackage); } } return manifests; }
static AssetMap buildAssetMap(Set<PackageManifest> manifests) { AssetMap result = new AssetMap(); for (PackageManifest p : manifests) { result.putAll(p.getFiles()); } return result; }
private static PackageManifest findManifest(File by, Set<PackageManifest> manifests) { for (PackageManifest manifest : manifests) { if (manifest.getUnitypackage().equals(by)) { return manifest; } } throw new IllegalArgumentException("Cannot find manifest for " + by); }
@TaskAction public void action() throws IOException, InterruptedException { FileTree tree = gatherForExport(getProject(), pack); Log.L.info("Gathered {} files for export", tree.getFiles().size()); PackageManifest.save(generateManifest(getProject(), tree, pack), manifest); cleanExistingPackage(); exportPackageJob(getProject(), tree); TimeoutTimer timer = new TimeoutTimer(Constants.DEFAULT_TIMEOUT_SECONDS, "Timed out waiting for export of " + unityPackage); while (!unityPackage.exists()) { Thread.sleep(100); Log.L.debug("Waiting for export of {}", unityPackage); timer.throwIfExceeded(); } }
public static Map<String, File> buildGUIDToUnitypackageMap(Set<PackageManifest> manifests) { Map<String, File> result = Maps.newHashMap(); for (PackageManifest manifest : manifests) { for (Map.Entry<String, Asset> entry : manifest.getFiles().entrySet()) { if (!result.containsKey(entry.getKey())) { result.put(entry.getKey(), manifest.getUnitypackage()); } } } return result; }
public static PackageManifest generateManifest(Project project, FileTree tree, Package pack) { Log.L.debug("Generating manifest for {} files", tree.getFiles().size()); // Relativize the paths to the project root, // so they start 'Assets/...". Path baseURL = Paths.get(project.getProjectDir().getPath()); PackageManifest manifest = new PackageManifest(pack); for (File file : tree.getFiles()) { String guid = getGUIDForAsset(file); String md5 = generateMD5(file); Path path = baseURL.relativize(file.toPath()); manifest.add(guid, path, md5); } return manifest; }
static Set<PackageManifest> gatherManifests(Set<ResolvedDependency> deps) { Set<PackageManifest> manifests = Sets.newHashSet(); for (ResolvedDependency dep : deps) { File manifest = null; File unityZip = null; for (ResolvedArtifact art : dep.getModuleArtifacts()) { if (art.getExtension().equals("manifest")) { manifest = art.getFile(); } else if (art.getExtension().equals("zip")) { unityZip = art.getFile(); } } if (null != manifest && null != unityZip) { PackageManifest p = PackageManifest.load(manifest); p.setUnityPackage(unityZip); manifests.add(p); } else { logger.error("Malformed package", manifest, unityZip); } } return manifests; }
static AssetMap buildAssetMap(Set<PackageManifest> manifests) { AssetMap result = new AssetMap(); for (PackageManifest p : manifests) { result.putAll(p.getFiles()); } return result; }
private static PackageManifest findManifest(File by, Set<PackageManifest> manifests) { for (PackageManifest manifest : manifests) { if (manifest.getUnitypackage().equals(by)) { return manifest; } } throw new IllegalArgumentException("Cannot find manifest for " + by); }
@TaskAction public void action() throws IOException, InterruptedException { FileTree tree = gatherForExport(getProject(), pack); Log.L.info("Gathered {} files for export", tree.getFiles().size()); PackageManifest.save(generateManifest(getProject(), tree, pack), manifest); cleanExistingPackage(); exportPackageJob(getProject(), tree); TimeoutTimer timer = new TimeoutTimer(Constants.DEFAULT_TIMEOUT_SECONDS, "Timed out waiting for export of " + unityPackage); while (!unityPackage.exists()) { Thread.sleep(100); Log.L.debug("Waiting for export of {}", unityPackage); timer.throwIfExceeded(); } }
public static Map<String, File> buildGUIDToUnitypackageMap(Set<PackageManifest> manifests) { Map<String, File> result = Maps.newHashMap(); for (PackageManifest manifest : manifests) { for (Map.Entry<String, Asset> entry : manifest.getFiles().entrySet()) { if (!result.containsKey(entry.getKey())) { result.put(entry.getKey(), manifest.getUnitypackage()); } } } return result; }
public static PackageManifest generateManifest(Project project, FileTree tree, Package pack) { Log.L.debug("Generating manifest for {} files", tree.getFiles().size()); // Relativize the paths to the project root, // so they start 'Assets/...". Path baseURL = Paths.get(project.getProjectDir().getPath()); PackageManifest manifest = new PackageManifest(pack); for (File file : tree.getFiles()) { if (Files.getFileExtension(file.getName()).equals("meta")) { continue; } String guid = getGUIDForAsset(file); String md5 = generateMD5(file); Path path = baseURL.relativize(file.toPath()); manifest.add(guid, path, md5); } return manifest; }
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)); }
public static void installPackages(Project project, List<FilteredManifest> manifests) { for (FilteredManifest manifest : manifests) { UnityPuppet.installPackage(project,manifest.getManifest().getUnitypackage(), manifest.getPathsToInclude()); } }