Merge pull request #12 from p1nkun1c0rns/master_up

Add mirror support
This commit is contained in:
Slawomir Jaranowski
2020-04-06 22:17:33 +02:00
committed by GitHub
4 changed files with 144 additions and 48 deletions

View File

@ -9,6 +9,9 @@ inputs:
servers:
description: 'servers definition in joson array, eg: [{"id": "serverId", "username": "username", "password": "password"}]'
required: false
mirrors:
description: 'mirrors definition in json array, eg: [{"id": "id", "name": "name", "mirrorOf": "mirrorOf", "url: "url"}]'
required: false
properties:
description: 'json array with properties, eg [{"propertyName1": "propertyValue1"}, {"propertyName2": "propertyValue2"}]'
required: false

View File

@ -91,6 +91,42 @@ function fillServers(template) {
JSON.parse(servers).forEach((server) => fillServer(template, server.id, server.username, server.password));
}
function fillMirror(template, id, name, mirrorOf, url) {
const mirrorXml = template.createElement('mirror');
if (!id || !name || !mirrorOf || !url) {
core.setFailed('mirrors must contain id, name, mirrorOf and url');
return;
}
const idXml = createElementWithText(template, 'id', id);
mirrorXml.appendChild(idXml);
const nameXml = createElementWithText(template, 'name', name);
mirrorXml.appendChild(nameXml);
const mirrorOfXml = createElementWithText(template, 'mirrorOf', mirrorOf);
mirrorXml.appendChild(mirrorOfXml);
const urlXml = createElementWithText(template, 'url', url);
mirrorXml.appendChild(urlXml);
const mirrorsXml = template.getElementsByTagName('mirrors')[0];
mirrorsXml.appendChild(mirrorXml);
}
function fillMirrors(template) {
const mirrors = core.getInput('mirrors');
if (!mirrors) {
return;
}
JSON.parse(mirrors).forEach((mirror) => fillMirror(template, mirror.id, mirror.name, mirror.mirrorOf, mirror.url));
}
function isInputTrue(inputName) {
const val = core.getInput(inputName);
return val && val.toLocaleLowerCase() == 'true';
@ -157,6 +193,7 @@ function generate() {
}
const templateXml = getSettingsTemplate();
fillMirrors(templateXml);
fillServers(templateXml);
fillServerForGithub(templateXml);
fillProperties(templateXml);
@ -184,6 +221,7 @@ function cleanup() {
module.exports = {
getSettingsTemplate,
writeSettings,
fillMirrors,
fillServers,
fillServerForGithub,
fillProperties,

View File

@ -99,7 +99,6 @@ afterEach(() => {
});
test('template should be read', () => {
const template = settings.getSettingsTemplate();
expect(template).toBeDefined();
@ -133,7 +132,6 @@ test('fillServers one server', () => {
const xml = new DOMParser().parseFromString("<servers/>");
process.env['INPUT_SERVERS'] = '[{"id": "id1", "username": "username1", "password":"password1"}]';
settings.fillServers(xml);
@ -194,6 +192,65 @@ test('fillServers github', () => {
expect(consoleOutput).toEqual([]);
});
test('fillMirrors do nothing if no params', () => {
const xml = new DOMParser().parseFromString("<mirrors/>");
settings.fillMirrors(xml);
const xmlStr = new XMLSerializer().serializeToString(xml);
expect(xmlStr).toBe("<mirrors/>");
});
test('fillMirrors one mirror', () => {
const xml = new DOMParser().parseFromString("<mirrors/>");
process.env['INPUT_MIRRORS'] = '[{"id": "id1", "name": "name", "mirrorOf":"mirrorOf", "url":"url"}]';
settings.fillMirrors(xml);
const xmlStr = new XMLSerializer().serializeToString(xml);
expect(xmlStr).toBe("<mirrors>" +
"<mirror><id>id1</id><name>name</name><mirrorOf>mirrorOf</mirrorOf><url>url</url></mirror>" +
"</mirrors>");
});
test('fillMirrors two mirrors', () => {
const xml = new DOMParser().parseFromString("<mirrors/>");
process.env['INPUT_MIRRORS'] = '[{"id": "id1", "name": "name1", "mirrorOf":"mirrorOf1", "url":"url1"},{"id": "id2", "name": "name2", "mirrorOf":"mirrorOf2", "url":"url2"}]';
settings.fillMirrors(xml);
const xmlStr = new XMLSerializer().serializeToString(xml);
expect(xmlStr).toBe("<mirrors>" +
"<mirror><id>id1</id><name>name1</name><mirrorOf>mirrorOf1</mirrorOf><url>url1</url></mirror><mirror><id>id2</id><name>name2</name><mirrorOf>mirrorOf2</mirrorOf><url>url2</url></mirror>" +
"</mirrors>");
});
test('fillMirrors incorrect fields', () => {
const xml = new DOMParser().parseFromString("<mirrors/>");
process.env['INPUT_MIRRORS'] = '[{"idx": "id1"}]';
settings.fillMirrors(xml);
const xmlStr = new XMLSerializer().serializeToString(xml);
expect(xmlStr).toBe('<mirrors/>');
expect(consoleOutput).toEqual(
expect.arrayContaining([
expect.stringMatching(/::error::mirrors must contain id, name, mirrorOf and url/)
])
);
});
test('addSonatypeSnapshots activate', () => {
process.env['INPUT_SONATYPESNAPSHOTS'] = "true";

View File

@ -1,8 +1,7 @@
<settings>
<interactiveMode>false</interactiveMode>
<profiles>
<!-- generic ############################################################# -->
<profile>
<id>_properties_</id>
<activation>
@ -10,7 +9,7 @@
</activation>
<properties />
</profile>
<!-- sonatype ############################################################# -->
<profile>
<id>_sonatype-snapshots_</id>
<activation>
@ -41,8 +40,7 @@
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<servers />
<mirrors />
</settings>