static Configuration parseConfiguration(String[] args) throws ParseException {
assert args != null;
LOG.debug("Analyzing YAESS bootstrap arguments: {}", Arrays.toString(args));
CommandLineParser parser = new BasicParser();
CommandLine cmd = parser.parse(OPTIONS, args);
String profile = cmd.getOptionValue(OPT_PROFILE.getOpt());
LOG.debug("Profile: {}", profile);
String script = cmd.getOptionValue(OPT_SCRIPT.getOpt());
LOG.debug("Script: {}", script);
String batchId = cmd.getOptionValue(OPT_BATCH_ID.getOpt());
LOG.debug("Batch ID: {}", batchId);
String flowId = cmd.getOptionValue(OPT_FLOW_ID.getOpt());
LOG.debug("Flow ID: {}", flowId);
String executionId = cmd.getOptionValue(OPT_EXECUTION_ID.getOpt());
LOG.debug("Execution ID: {}", executionId);
String phaseName = cmd.getOptionValue(OPT_PHASE_NAME.getOpt());
LOG.debug("Phase name: {}", phaseName);
String plugins = cmd.getOptionValue(OPT_PLUGIN.getOpt());
LOG.debug("Plug-ins: {}", plugins);
Properties arguments = cmd.getOptionProperties(OPT_ARGUMENT.getOpt());
LOG.debug("Execution arguments: {}", arguments);
Properties definitions = cmd.getOptionProperties(OPT_DEFINITION.getOpt());
LOG.debug("Execution definitions: {}", definitions);
LOG.debug("Loading plugins: {}", plugins);
List<File> pluginFiles = CommandLineUtil.parseFileList(plugins);
ClassLoader loader = CommandLineUtil.buildPluginLoader(Yaess.class.getClassLoader(), pluginFiles);