File src = directoryInput.getFile(); File dst = invocation.getOutputProvider().getContentLocation( directoryInput.getName(), directoryInput.getContentTypes(),
@Test public void addDirectoryInput_builtShouldReturnCorrectFile() throws Exception { File file = getTmpFile("tmp"); TransformInput input = builder.addDirectoryInput(file).build(); assertThat(input.getDirectoryInputs()).hasSize(1); assertThat(input.getDirectoryInputs().toArray(new DirectoryInput[1])[0].getFile()) .isEqualTo(file); }
File inputDir = directoryInput.getFile(); if (transformInvocation.isIncremental()) {
private Stream<Path> toStream(DirectoryInput dir) { try { return Files.walk(dir.getFile().toPath()).filter(Files::isRegularFile); } catch (IOException e) { throw new UncheckedIOException(e); } } }
DirectoryTask(DirectoryInput directory, boolean includeNotChanged, boolean incremental, boolean write, Visitor.Factory factory, @Nullable Set<String> targets) { this.d = directory; this.includeNotChanged = includeNotChanged; this.incremental = incremental; this.write = write; this.factory = factory; this.targets = targets; this.base = d.getFile().toURI(); }
private static void addAllClassLocations(TransformInput transformInput, List<URL> into) throws MalformedURLException { for (DirectoryInput directoryInput : transformInput.getDirectoryInputs()) { into.add(directoryInput.getFile().toURI().toURL()); } for (JarInput jarInput : transformInput.getJarInputs()) { into.add(jarInput.getFile().toURI().toURL()); } }
@Override public void proceed() { Stream.concat( streamOf(inputs, TransformInput::getDirectoryInputs).map(input -> { Path src = input.getFile().toPath(); Path dst = getTargetPath.apply(input); return new DirProcessor(transform, src, dst); }), streamOf(inputs, TransformInput::getJarInputs).map(input -> { Path src = input.getFile().toPath(); Path dst = getTargetPath.apply(input); return new JarProcessor(transform, src, dst); }) ).forEach(Processor::proceed); }
private static File verifyInputs(@NonNull Collection<TransformInput> inputs) { // Collect the inputs. There should be only one. List<File> inputFiles = Lists.newArrayList(); for (TransformInput transformInput : inputs) { for (JarInput jarInput : transformInput.getJarInputs()) { inputFiles.add(jarInput.getFile()); } for (DirectoryInput directoryInput : transformInput.getDirectoryInputs()) { inputFiles.add(directoryInput.getFile()); } } return Iterables.getOnlyElement(inputFiles); }
private static Collection<File> getAllFiles( Collection<TransformInput> transformInputs, boolean includeDirectoryInput, boolean includeJarInput) { ImmutableList.Builder<File> inputFiles = ImmutableList.builder(); for (TransformInput input : transformInputs) { if (includeDirectoryInput) { for (DirectoryInput directoryInput : input.getDirectoryInputs()) { inputFiles.add(directoryInput.getFile()); } } if (includeJarInput) { for (JarInput jarInput : input.getJarInputs()) { inputFiles.add(jarInput.getFile()); } } } return inputFiles.build(); } }
private void fullCopy(Collection<TransformInput> inputs) throws IOException { FileUtils.deleteQuietly(outFolder); FileUtils.forceMkdir(outFolder); for (TransformInput input : inputs) { for (DirectoryInput dirInput : input.getDirectoryInputs()) { File dataBindingDir = dirInput.getFile(); if (!dataBindingDir.exists()) { continue; } File artifactFolder = new File(dataBindingDir, DataBindingBuilder.INCREMENTAL_BIN_AAR_DIR); if (!artifactFolder.exists()) { continue; } //noinspection ConstantConditions for (String artifactName : artifactFolder.list()) { if (isResource(artifactName)) { FileUtils.copyFile(new File(artifactFolder, artifactName), new File(outFolder, artifactName)); } } } for(JarInput jarInput : input.getJarInputs()) { File jarFile = jarInput.getFile(); extractBinFilesFromJar(jarFile); } } }
@NonNull public Map<File, Format> getPipelineOutput( @NonNull StreamFilter streamFilter) { ImmutableList<TransformStream> streams = getStreams(streamFilter); if (streams.isEmpty()) { return ImmutableMap.of(); } ImmutableMap.Builder<File, Format> builder = ImmutableMap.builder(); for (TransformStream stream : streams) { // get the input for it TransformInput input = stream.asNonIncrementalInput(); for (JarInput jarInput : input.getJarInputs()) { builder.put(jarInput.getFile(), Format.JAR); } for (DirectoryInput directoryInput : input.getDirectoryInputs()) { builder.put(directoryInput.getFile(), Format.DIRECTORY); } } return builder.build(); } }
private void gatherListFromFolder( @NonNull File file, @NonNull String path, @NonNull DirectoryInput directoryInput, @NonNull ListMultimap<String, QualifiedContent> content) { File[] children = file.listFiles(new FilenameFilter() { @Override public boolean accept(File file, String name) { return file.isDirectory() || !name.endsWith(SdkConstants.DOT_CLASS); } }); if (children != null) { for (File child : children) { String newPath = path.isEmpty() ? child.getName() : path + '/' + child.getName(); if (child.isDirectory()) { gatherListFromFolder( child, newPath, directoryInput, content); } else if (child.isFile() && validator.validateFolderPath(newPath)) { content.put(validator.folderPathToKey(newPath), directoryInput); } } } }
private static File getOutputStreamForFile( @NonNull TransformOutputProvider transformOutputProvider, @NonNull DirectoryInput input, @NonNull File file, @NonNull Slices slices) { String relativePackagePath = FileUtils.relativePossiblyNonExistingPath(file.getParentFile(), input.getFile()); Slice slice = slices.getSliceFor(new Slice.SlicedElement(relativePackagePath, file)); return transformOutputProvider.getContentLocation(slice.name, TransformManager.CONTENT_CLASS, Sets.immutableEnumSet(Scope.PROJECT, Scope.SUB_PROJECTS), Format.DIRECTORY); }
File[] files = directoryInput.getFile().listFiles(); if (files != null) { dexFiles.add(files);
@Override public void transform(@NonNull TransformInvocation invocation) throws IOException, TransformException, InterruptedException { checkNotNull(invocation.getOutputProvider(), "Missing output object for transform " + getName()); File outputDir = invocation.getOutputProvider().getContentLocation( "main", getOutputTypes(), getScopes(), Format.DIRECTORY); FileUtils.mkdirs(outputDir); TransformInput input = Iterables.getOnlyElement(invocation.getInputs()); // we don't want jar inputs. Preconditions.checkState(input.getJarInputs().isEmpty()); DirectoryInput directoryInput = Iterables.getOnlyElement(input.getDirectoryInputs()); File inputDir = directoryInput.getFile(); Instrumenter instrumenter = new Instrumenter(new OfflineInstrumentationAccessGenerator()); if (invocation.isIncremental()) { instrumentFilesIncremental(instrumenter, inputDir, outputDir, directoryInput.getChangedFiles()); } else { instrumentFilesFullRun(instrumenter, inputDir, outputDir); } }
@Override public void transform(@NonNull TransformInvocation invocation) throws IOException, TransformException, InterruptedException { FileUtils.cleanOutputDir(jniLibsFolder); for (TransformInput input : invocation.getReferencedInputs()) { for (JarInput jarInput : input.getJarInputs()) { copyFromJar(jarInput.getFile()); } for (DirectoryInput directoryInput : input.getDirectoryInputs()) { copyFromFolder(directoryInput.getFile()); } } }
for (DirectoryInput dirInput : input.getDirectoryInputs()) { File dirOutput = outputProvider.getContentLocation(dirInput.getName() + "-" + dirInput.getFile().getAbsolutePath().hashCode(), dirInput.getContentTypes(), dirInput.getScopes(), Format.DIRECTORY); org.apache.commons.io.FileUtils.copyDirectory(dirInput.getFile(), dirOutput);
jarMerger.addFolder(directoryInput.getFile());