Skip to content

Commit

Permalink
Merge pull request #165 from kiwigrid/feature/env-substitution-for-cr…
Browse files Browse the repository at this point in the history
…edentials

feat: support environment variable references in maven settings server credentials
  • Loading branch information
jekkel authored Sep 5, 2024
2 parents c5f3b69 + 4dfb699 commit f901d6c
Show file tree
Hide file tree
Showing 11 changed files with 1,540 additions and 125 deletions.
13 changes: 11 additions & 2 deletions lib/maven-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const {
evaluateXPathToStrings
} = require("fontoxpath");
const {sync} = require('slimdom-sax-parser')
require('regexp.escape').shim()

class MavenXmlFile {

Expand Down Expand Up @@ -181,8 +182,8 @@ class MavenSettingsFile extends MavenXmlFile {
const serverNode = evaluateXPathToFirstNode('/settings/servers/server[id="' + repoId + '"]', this.document);
if (serverNode) {
this.logger.debug('Found active profile repo server: ' + serverNode);
const userName = evaluateXPathToString('username/text()', serverNode);
const password = evaluateXPathToString('password/text()', serverNode);
const userName = this.#resolveEnvironmentVariables(evaluateXPathToString('username/text()', serverNode));
const password = this.#resolveEnvironmentVariables(evaluateXPathToString('password/text()', serverNode));
const buff = Buffer.from(userName + ':' + password, 'utf-8');
fetchOptions.headers = {
'Authorization': 'Basic ' + buff.toString('base64')
Expand All @@ -191,6 +192,14 @@ class MavenSettingsFile extends MavenXmlFile {
return fetchOptions;
}

#resolveEnvironmentVariables(templateString) {
for (const envVarname in process.env) {
const search = new RegExp(`\\$\\{env\\.${RegExp.escape(envVarname)}\\}`, 'g');
templateString = templateString.replaceAll(search, process.env[envVarname]);
}
return templateString;
}

}

class MavenMetaDataFile extends MavenXmlFile {
Expand Down
Loading

0 comments on commit f901d6c

Please sign in to comment.