mirror of
https://github.com/hashicorp/vault-action.git
synced 2025-11-07 15:16:56 +00:00
test remove if check
This commit is contained in:
parent
32afcc7f20
commit
ba90f2d74c
1 changed files with 19 additions and 8 deletions
|
|
@ -74,22 +74,23 @@ async function selectData(data, selector) {
|
||||||
const ata = jsonata(selector);
|
const ata = jsonata(selector);
|
||||||
let d = await ata.evaluate(data);
|
let d = await ata.evaluate(data);
|
||||||
|
|
||||||
|
console.log(selector)
|
||||||
// If we have a Javascript Object, then this data was stored in Vault as
|
// If we have a Javascript Object, then this data was stored in Vault as
|
||||||
// pure JSON (not a JSON string)
|
// pure JSON (not a JSON string)
|
||||||
const storedAsJSONData = isObject(d);
|
const storedAsJSONData = isObject(d);
|
||||||
|
|
||||||
if (isJSONString(d)) {
|
// if (isJSONString(d)) {
|
||||||
// If we already have a JSON string we will not "stringify" it yet so
|
// If we already have a JSON string we will not "stringify" it yet so
|
||||||
// that we don't end up calling JSON.parse. This would break the
|
// that we don't end up calling JSON.parse. This would break the
|
||||||
// secrets that are stored as pure JSON. See: https://github.com/hashicorp/vault-action/issues/194
|
// secrets that are stored as pure JSON. See: https://github.com/hashicorp/vault-action/issues/194
|
||||||
result = d;
|
// result = d;
|
||||||
} else {
|
// } else {
|
||||||
result = JSON.stringify(d);
|
result = jsonstringify(d, 0);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Compat for custom engines
|
// Compat for custom engines
|
||||||
if (!result && ((ata.ast().type === "path" && ata.ast()['steps'].length === 1) || ata.ast().type === "string") && selector !== 'data' && 'data' in data) {
|
if (!result && ((ata.ast().type === "path" && ata.ast()['steps'].length === 1) || ata.ast().type === "string") && selector !== 'data' && 'data' in data) {
|
||||||
result = JSON.stringify(await jsonata(`data.${selector}`).evaluate(data));
|
result = jsonstringify(await jsonata(`data.${selector}`).evaluate(data), 1);
|
||||||
} else if (!result) {
|
} else if (!result) {
|
||||||
throw Error(`Unable to retrieve result for ${selector}. No match data was found. Double check your Key or Selector.`);
|
throw Error(`Unable to retrieve result for ${selector}. No match data was found. Double check your Key or Selector.`);
|
||||||
}
|
}
|
||||||
|
|
@ -108,22 +109,29 @@ async function selectData(data, selector) {
|
||||||
if (storedAsJSONData) {
|
if (storedAsJSONData) {
|
||||||
// Support secrets stored in Vault as pure JSON.
|
// Support secrets stored in Vault as pure JSON.
|
||||||
// See https://github.com/hashicorp/vault-action/issues/194 and https://github.com/hashicorp/vault-action/pull/173
|
// See https://github.com/hashicorp/vault-action/issues/194 and https://github.com/hashicorp/vault-action/pull/173
|
||||||
result = JSON.stringify(result);
|
result = jsonstringify(result, 2);
|
||||||
result = result.substring(1, result.length - 1);
|
result = result.substring(1, result.length - 1);
|
||||||
} else {
|
} else {
|
||||||
// Support secrets stored in Vault as JSON Strings
|
// Support secrets stored in Vault as JSON Strings
|
||||||
result = JSON.stringify(result);
|
result = jsonstringify(result, 3);
|
||||||
result = JSON.parse(result);
|
result = JSON.parse(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log()
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function jsonstringify(input, call) {
|
||||||
|
console.log('stringify', call);
|
||||||
|
return JSON.stringify(input)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* isOjbect returns true if target is a Javascript object
|
* isOjbect returns true if target is a Javascript object
|
||||||
* @param {Type} target
|
* @param {Type} target
|
||||||
*/
|
*/
|
||||||
function isObject(target) {
|
function isObject(target) {
|
||||||
|
console.log('isObject: ', typeof target === 'object' && target !== null)
|
||||||
return typeof target === 'object' && target !== null;
|
return typeof target === 'object' && target !== null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,15 +141,18 @@ function isObject(target) {
|
||||||
*/
|
*/
|
||||||
function isJSONString(target) {
|
function isJSONString(target) {
|
||||||
if (typeof target !== "string"){
|
if (typeof target !== "string"){
|
||||||
|
console.log('isJSONString: false, not string')
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
JSON.parse(target);
|
JSON.parse(target);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
console.log('isJSONString: false, failed to parse')
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('isJSONString: true')
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue