Skip to content

Instantly share code, notes, and snippets.

@joseph-flinn
Last active May 20, 2021 15:51
Show Gist options
  • Save joseph-flinn/c940392463964b6139df4325b471c8ad to your computer and use it in GitHub Desktop.
Save joseph-flinn/c940392463964b6139df4325b471c8ad to your computer and use it in GitHub Desktop.
get-keyvault-secrets-add-dynamic-secret-name-support
downloadSelectedSecrets(secretsFilter) {
let selectedSecrets = [];
if (secretsFilter) {
selectedSecrets = secretsFilter.split(',');
}
return new Promise((resolve, reject) => {
var getSecretValuePromises = [];
selectedSecrets.forEach((secret) => {
var secretName = "";
var secretEnvName = "";
secret = secret.split(":");
if ( secret.length === 1 ) {
secretName = secretEnvName = secret[0];
}
else if ( secret.length === 2 ) {
secretName = secret[0];
secretEnvName = secret[1];
}
else {
reject(new Error("Error parsing the secretsFilter"));
}
getSecretValuePromises.push(this.downloadSecretValue(secretName, secretEnvName));
});
Promise.all(getSecretValuePromises).then(() => {
return resolve();
}, error => {
return reject(new Error("Downloading selected secrets failed"));
});
});
}
downloadSecretValue(secretName, secretEnvName) {
secretName = secretName.trim();
return new Promise((resolve, reject) => {
this.keyVaultClient.getSecretValue(secretName, (error, secretValue) => {
if (error) {
core.setFailed(util.format("Could not download the secret %s", secretName));
}
else {
this.setVaultVariable(secretEnvName, secretValue);
}
return resolve();
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment