changed action for arc cluster to use az connectedk8s proxy
This commit is contained in:
91
node_modules/actions-secret-parser/index.js
generated
vendored
Normal file
91
node_modules/actions-secret-parser/index.js
generated
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var core = require('@actions/core');
|
||||
var jp = require('jsonpath');
|
||||
var xpath = require('xpath');
|
||||
var domParser = require('xmldom').DOMParser;
|
||||
var FormatType;
|
||||
(function (FormatType) {
|
||||
FormatType[FormatType["JSON"] = 0] = "JSON";
|
||||
FormatType[FormatType["XML"] = 1] = "XML";
|
||||
})(FormatType = exports.FormatType || (exports.FormatType = {}));
|
||||
/**
|
||||
* Takes content as string and format type (xml, json).
|
||||
* Exposes getSecret method to get value of specific secret in object and set it as secret.
|
||||
*/
|
||||
class SecretParser {
|
||||
constructor(content, contentType) {
|
||||
switch (contentType) {
|
||||
case FormatType.JSON:
|
||||
try {
|
||||
this.dom = JSON.parse(content);
|
||||
}
|
||||
catch (ex) {
|
||||
throw new Error('Content is not a valid JSON object');
|
||||
}
|
||||
break;
|
||||
case FormatType.XML:
|
||||
try {
|
||||
this.dom = new domParser().parseFromString(content);
|
||||
}
|
||||
catch (ex) {
|
||||
throw new Error('Content is not a valid XML object');
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Error(`Given format: ${contentType} is not supported. Valid options are JSON, XML.`);
|
||||
}
|
||||
this.contentType = contentType;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param key jsonpath or xpath depending on content type
|
||||
* @param isSecret should the value parsed be a secret. Deafult: true
|
||||
* @param variableName optional. If provided value will be exported with this variable name
|
||||
* @returns a string value or empty string if key not found
|
||||
*/
|
||||
getSecret(key, isSecret = true, variableName) {
|
||||
let value = "";
|
||||
switch (this.contentType) {
|
||||
case FormatType.JSON:
|
||||
value = this.extractJsonPath(key, isSecret, variableName);
|
||||
break;
|
||||
case FormatType.XML:
|
||||
value = this.extractXmlPath(key, isSecret, variableName);
|
||||
break;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
extractJsonPath(key, isSecret = false, variableName) {
|
||||
let value = jp.query(this.dom, key);
|
||||
if (value.length == 0) {
|
||||
core.debug("Cannot find key: " + key);
|
||||
return "";
|
||||
}
|
||||
else if (value.length > 1) {
|
||||
core.debug("Multiple values found for key: " + key + ". Please give jsonPath which points to a single value.");
|
||||
return "";
|
||||
}
|
||||
return this.handleSecret(key, value[0], isSecret, variableName);
|
||||
}
|
||||
extractXmlPath(key, isSecret = false, variableName) {
|
||||
let value = xpath.select("string(" + key + ")", this.dom);
|
||||
return this.handleSecret(key, value, isSecret, variableName);
|
||||
}
|
||||
handleSecret(key, value, isSecret, variableName) {
|
||||
if (!!value) {
|
||||
if (isSecret) {
|
||||
core.setSecret(value);
|
||||
}
|
||||
if (!!variableName) {
|
||||
core.exportVariable(variableName, value);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
else {
|
||||
core.debug("Cannot find key: " + key);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.SecretParser = SecretParser;
|
||||
Reference in New Issue
Block a user