import java.util.Map;
import java.util.Set;
+import jalview.util.FileUtils;
+
public class ArgParser
{
private static final String NEGATESTRING = "no";
private static enum Opt
{
- BOOLEAN, STRING, UNARY, MULTI, LINKED, NODUPLICATEVALUES, BOOTSTRAP
+ BOOLEAN, STRING, UNARY, MULTI, LINKED, NODUPLICATEVALUES, BOOTSTRAP,
+ GLOB
}
// These bootstrap args are simply parsed before a full parse of arguments and
CLOSE.setOptions(Opt.UNARY, Opt.LINKED);
DEBUG.setOptions(Opt.BOOLEAN, Opt.BOOTSTRAP);
QUIET.setOptions(Opt.UNARY, Opt.MULTI, Opt.BOOTSTRAP);
- ARGFILE.setOptions(Opt.STRING, Opt.MULTI, Opt.BOOTSTRAP);
+ ARGFILE.setOptions(Opt.STRING, Opt.MULTI, Opt.BOOTSTRAP, Opt.GLOB);
}
private final String[] argNames;
}
}
- public static ArgParser parseArgFiles(List<String> argFilenames)
+ public static ArgParser parseArgFiles(List<String> argFilenameGlobs)
+ {
+ List<File> argFiles = new ArrayList<>();
+
+ for (String pattern : argFilenameGlobs)
+ {
+ // I don't think we want to dedup files, making life easier
+ argFiles.addAll(FileUtils.getFilesFromGlob(pattern));
+ }
+
+ return parseArgFileList(argFiles);
+ }
+
+ public static ArgParser parseArgFileList(List<File> argFiles)
{
List<String> argsList = new ArrayList<>();
- for (String argFilename : argFilenames)
+ for (File argFile : argFiles)
{
- File argFile = new File(argFilename);
if (!argFile.exists())
{
- System.err
- .println("--" + Arg.ARGFILE.name().toLowerCase(Locale.ROOT)
- + "=\"" + argFilename + "\": File does not exist.");
+ System.err.println(
+ "--" + Arg.ARGFILE.name().toLowerCase(Locale.ROOT) + "=\""
+ + argFile.getPath() + "\": File does not exist.");
System.exit(2);
}
try
{
- argsList.addAll(Files.readAllLines(Paths.get(argFilename)));
+ argsList.addAll(Files.readAllLines(Paths.get(argFile.getPath())));
} catch (IOException e)
{
- System.err.println(
- "--" + Arg.ARGFILE.name().toLowerCase(Locale.ROOT) + "=\""
- + argFilename + "\": File could not be read.");
+ System.err.println("--"
+ + Arg.ARGFILE.name().toLowerCase(Locale.ROOT) + "=\""
+ + argFile.getPath() + "\": File could not be read.");
System.exit(3);
}
}
// only need one
private static Map<Arg, List<String>> bootstrapArgMap = new HashMap<>();
- private BootstrapArgs(String[] args)
+ public static BootstrapArgs getBootstrapArgs(String[] args)
{
- init(args);
+ return new BootstrapArgs(args);
}
- public static BootstrapArgs getBootstrapArgs(String[] args)
+ private BootstrapArgs(String[] args)
{
- return new BootstrapArgs(args);
+ init(args);
}
private void init(String[] args)