class GenericCLI implements CustomCommandLine {

	@Override
	public Configuration applyCommandLineOptionsToConfiguration(final CommandLine commandLine) {
		final Configuration effectiveConfiguration = new Configuration(baseConfiguration);

		final String executorName = commandLine.getOptionValue(executorOption.getOpt());
		if (executorName != null) {
			effectiveConfiguration.setString(DeploymentOptions.TARGET, executorName);
		}

		final String targetName = commandLine.getOptionValue(targetOption.getOpt());
		if (targetName != null) {
			effectiveConfiguration.setString(DeploymentOptions.TARGET, targetName);
		}

		encodeDynamicProperties(commandLine, effectiveConfiguration);
		effectiveConfiguration.set(DeploymentOptionsInternal.CONF_DIR, configurationDir);

		if (LOG.isDebugEnabled()) {
			LOG.debug("Effective Configuration: {}", effectiveConfiguration);
		}

		return effectiveConfiguration;
	}

	public  GenericCLI(final Configuration configuration, final String configDir);

}