package nu.studer.gradle.credentials;
import nu.studer.gradle.credentials.domain.CredentialsPersistenceManager;
import nu.studer.java.util.OrderedProperties;
import org.gradle.api.DefaultTask;
import org.gradle.api.internal.tasks.options.Option;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
/**
* Removes the given credentials, specified as project properties.
*/
public class RemoveCredentialsTask extends DefaultTask {
private static final Logger LOGGER = LoggerFactory.getLogger(RemoveCredentialsTask.class);
private CredentialsPersistenceManager credentialsPersistenceManager;
private String key;
public void setCredentialsPersistenceManager(CredentialsPersistenceManager credentialsPersistenceManager) {
this.credentialsPersistenceManager = credentialsPersistenceManager;
}
@Option(option = "key", description = "The credentials key.")
public void setKey(String key) {
this.key = key;
}
public String getCredentialsKey() {
return key != null ? key : getProjectProperty(CredentialsPlugin.CREDENTIALS_KEY_PROPERTY);
}
@OutputFile
public File getEncryptedPropertiesFile() {
return credentialsPersistenceManager.getCredentialsFile();
}
@TaskAction
void removeCredentials() throws IOException {
// get credentials key from the project properties
String key = getCredentialsKey();
LOGGER.debug(String.format("Remove credentials with key: '%s'", key));
// read the current persisted credentials
OrderedProperties credentials = credentialsPersistenceManager.readCredentials();
// remove the credentials with the given key
credentials.removeProperty(key);
// persist the updated credentials
credentialsPersistenceManager.storeCredentials(credentials);
}
private String getProjectProperty(String key) {
return (String) getProject().getProperties().get(key);
}
}