package cmdline0;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.regex.Pattern;
import java.util.stream.Stream;

public class FileList {
  private static void list(boolean all, String dir, Optional<String> match) throws IOException {
    Path directory = Paths.get(dir);
    Pattern pattern = match.map(Pattern::compile).orElseGet(() -> Pattern.compile(".*"));
    
    try(Stream<Path> paths = Files.list(directory)) {
      paths.forEach(path -> {
        String fileName = path.getFileName().toString();
        if (fileName.startsWith(".") && !all) {
          return;
        }
        if (!pattern.matcher(fileName).find()) {
          return;
        }
        System.out.println(path);
      });  
    }
  }
  
  public static void main(String[] args) throws IOException {
    CmdLine cmdLine = new CmdLine();
    cmdLine.registerOption("-m");
    cmdLine.registerOption("-a");
    List<String> files = cmdLine.parse(Arrays.asList("-a", /* "-m", ".*\\.txt", */ "folder"));
    
    boolean all = cmdLine.getOptionsSeen().contains("-a");
    Optional<String> match = Optional.empty(); // FIXME
    
    if (files.isEmpty()) {
      list(all, ".", match);
    } else {
      for(String file: files) {
        list(all, file, match);
      }
    }
  }
}
