public GlobDirectoryWalker(String globExpression) { // Determine leading part that is unglobbed, i.e. does not contain a '*'. int indexOfUnglobbedPart = findIndexOfUnglobbedPart(globExpression); String unglobbedPart = globExpression.substring(0, indexOfUnglobbedPart + 1); this.rootDirectory = new File(unglobbedPart).getAbsoluteFile(); this.globExpression = globExpression.substring(indexOfUnglobbedPart + 1); checkInput(rootDirectory); this.canonicalRootDir = getCanonicalPath(rootDirectory); }
private void scanDir(File dir, List<Pattern> includes) { if (!dir.canRead()) return; if (isGlobalExpression(includes)) { findFilesThroughMatchingDirectories(dir, includes); } else { findFileInSpecificLocation(dir, includes); } }
private void findFileInSpecificLocation(File dir, List<Pattern> includes) { List<Pattern> matchingIncludes = new ArrayList<Pattern>(1); for (Pattern include : includes) { if (matchingIncludes.isEmpty()) { matchingIncludes.add(include); } else { matchingIncludes.set(0, include); } process(dir, include.value, matchingIncludes); } }
public GlobDirectoryWalker(String rootDir, String globExpression) { rootDirectory = new File(rootDir); checkInput(rootDirectory); this.canonicalRootDir = getCanonicalPath(rootDirectory); this.globExpression = globExpression; }
private URLClassLoader createUrlClassLoader(List<String> classPaths) { List<URL> cpUrls = new ArrayList<URL>(); for (String cp: classPaths) { try { DirectoryWalker globDirectoryWalker = new GlobDirectoryWalker(cp); for (File f: globDirectoryWalker.scan()) { cpUrls.add(f.toURI().toURL()); } } catch (Exception e) { System.err.println(String.format("asciidoctor: WARNING: Could not resolve classpath '%s': %s", cp, e.getMessage())); } } return new URLClassLoader(cpUrls.toArray(new URL[cpUrls.size()])); }
@Override public List<File> scan() { Pattern pattern = new Pattern(globExpression); scanDir(this.canonicalRootDir, Arrays.asList(pattern)); return this.matches; }
private URLClassLoader createUrlClassLoader(List<String> classPaths) { List<URL> cpUrls = new ArrayList<URL>(); for (String cp: classPaths) { try { DirectoryWalker globDirectoryWalker = new GlobDirectoryWalker(cp); for (File f: globDirectoryWalker.scan()) { cpUrls.add(f.toURI().toURL()); } } catch (Exception e) { System.err.println(String.format("asciidoctor: WARNING: Could not resolve classpath '%s': %s", cp, e.getMessage())); } } return new URLClassLoader(cpUrls.toArray(new URL[cpUrls.size()])); }
@Override public List<File> scan() { Pattern pattern = new Pattern(globExpression); scanDir(this.canonicalRootDir, Arrays.asList(pattern)); return this.matches; }
private void scanDir(File dir, List<Pattern> includes) { if (!dir.canRead()) return; if (isGlobalExpression(includes)) { findFilesThroughMatchingDirectories(dir, includes); } else { findFileInSpecificLocation(dir, includes); } }
private List<File> getInputFiles(AsciidoctorCliOptions asciidoctorCliOptions) { List<String> parameters = asciidoctorCliOptions.getParameters(); if (parameters.isEmpty()) { System.err.println("asciidoctor: FAILED: input file missing"); throw new IllegalArgumentException( "asciidoctor: FAILED: input file missing"); } if (parameters.contains("-")) { System.err .println("asciidoctor: FAILED: input file is required instead of an argument."); throw new IllegalArgumentException( "asciidoctor: FAILED: input file is required instead of an argument."); } List<File> filesToBeRendered = new ArrayList<File>(); for (String globExpression : parameters) { DirectoryWalker globDirectoryWalker = new GlobDirectoryWalker(".", globExpression); filesToBeRendered.addAll(globDirectoryWalker.scan()); } return filesToBeRendered; }
public GlobDirectoryWalker(String globExpression) { // Determine leading part that is unglobbed, i.e. does not contain a '*'. int indexOfUnglobbedPart = findIndexOfUnglobbedPart(globExpression); String unglobbedPart = globExpression.substring(0, indexOfUnglobbedPart + 1); this.rootDirectory = new File(unglobbedPart).getAbsoluteFile(); this.globExpression = globExpression.substring(indexOfUnglobbedPart + 1); checkInput(rootDirectory); this.canonicalRootDir = getCanonicalPath(rootDirectory); }
@Override public List<File> scan() { Pattern pattern = new Pattern(globExpression); scanDir(this.canonicalRootDir, Arrays.asList(pattern)); return this.matches; }
private void findFileInSpecificLocation(File dir, List<Pattern> includes) { List<Pattern> matchingIncludes = new ArrayList<Pattern>(1); for (Pattern include : includes) { if (matchingIncludes.isEmpty()) { matchingIncludes.add(include); } else { matchingIncludes.set(0, include); } process(dir, include.value, matchingIncludes); } }
private void scanDir(File dir, List<Pattern> includes) { if (!dir.canRead()) return; if (isGlobalExpression(includes)) { findFilesThroughMatchingDirectories(dir, includes); } else { findFileInSpecificLocation(dir, includes); } }
private List<File> getInputFiles(AsciidoctorCliOptions asciidoctorCliOptions) { List<String> parameters = asciidoctorCliOptions.getParameters(); if (parameters.isEmpty()) { System.err.println("asciidoctor: FAILED: input file missing"); throw new IllegalArgumentException( "asciidoctor: FAILED: input file missing"); } if (parameters.contains("-")) { System.err .println("asciidoctor: FAILED: input file is required instead of an argument."); throw new IllegalArgumentException( "asciidoctor: FAILED: input file is required instead of an argument."); } List<File> filesToBeRendered = new ArrayList<File>(); for (String globExpression : parameters) { DirectoryWalker globDirectoryWalker = new GlobDirectoryWalker(globExpression); filesToBeRendered.addAll(globDirectoryWalker.scan()); } return filesToBeRendered; }
scanDir(file, matchingIncludes);
private void findFileInSpecificLocation(File dir, List<Pattern> includes) { List<Pattern> matchingIncludes = new ArrayList<Pattern>(1); for (Pattern include : includes) { if (matchingIncludes.isEmpty()) { matchingIncludes.add(include); } else { matchingIncludes.set(0, include); } process(dir, include.value, matchingIncludes); } }
private List<File> getInputFiles(AsciidoctorCliOptions asciidoctorCliOptions) { List<String> parameters = asciidoctorCliOptions.getParameters(); if (parameters.isEmpty()) { System.err.println("asciidoctor: FAILED: input file missing"); throw new IllegalArgumentException( "asciidoctor: FAILED: input file missing"); } if (parameters.contains("-")) { System.err .println("asciidoctor: FAILED: input file is required instead of an argument."); throw new IllegalArgumentException( "asciidoctor: FAILED: input file is required instead of an argument."); } List<File> filesToBeRendered = new ArrayList<File>(); for (String globExpression : parameters) { DirectoryWalker globDirectoryWalker = new GlobDirectoryWalker(globExpression); filesToBeRendered.addAll(globDirectoryWalker.scan()); } return filesToBeRendered; }
scanDir(file, matchingIncludes);
private void findFilesThroughMatchingDirectories(File dir, List<Pattern> includes) { for (String fileName : dir.list()) { List<Pattern> matchingIncludes = new ArrayList<Pattern>( includes.size()); for (Pattern include : includes) { if (include.matches(fileName)) { matchingIncludes.add(include); } } if (matchingIncludes.isEmpty()) { continue; } process(dir, fileName, matchingIncludes); } }