2019-11-15 16:01:13 -08:00
|
|
|
import * as fs from 'fs';
|
|
|
|
import * as os from 'os';
|
|
|
|
import * as path from 'path';
|
|
|
|
import * as core from '@actions/core';
|
|
|
|
import * as io from '@actions/io';
|
|
|
|
|
2019-11-20 10:25:21 -08:00
|
|
|
export const M2_DIR = '.m2';
|
|
|
|
export const SETTINGS_FILE = 'settings.xml';
|
|
|
|
|
2019-11-28 12:40:45 -08:00
|
|
|
export async function configAuthentication(
|
|
|
|
id: string,
|
|
|
|
username: string,
|
|
|
|
password: string
|
|
|
|
) {
|
2019-11-28 12:40:08 -08:00
|
|
|
if (id && username && password) {
|
2019-11-28 12:54:29 -08:00
|
|
|
console.log(
|
|
|
|
`creating ${SETTINGS_FILE} with server-id: ${id}, username: ${username}, and a password`
|
|
|
|
);
|
2019-12-10 10:03:33 -08:00
|
|
|
// when an alternate m2 location is specified use only that location (no .m2 directory)
|
|
|
|
// otherwise use the home/.m2/ path
|
|
|
|
const directory: string = path.join(
|
2019-12-10 13:02:21 -08:00
|
|
|
core.getInput('settings-path') || os.homedir(),
|
|
|
|
core.getInput('settings-path') ? '' : M2_DIR
|
2019-12-10 10:03:33 -08:00
|
|
|
);
|
2019-11-20 10:25:21 -08:00
|
|
|
await io.mkdirP(directory);
|
|
|
|
core.debug(`created directory ${directory}`);
|
2019-11-28 12:40:08 -08:00
|
|
|
await write(directory, generate(id, username, password));
|
2019-11-20 10:25:21 -08:00
|
|
|
} else {
|
|
|
|
core.debug(
|
2019-11-28 12:54:29 -08:00
|
|
|
`no ${SETTINGS_FILE} without server-id: ${id}, username: ${username}, and a password`
|
2019-11-20 10:25:21 -08:00
|
|
|
);
|
|
|
|
}
|
2019-11-15 16:01:13 -08:00
|
|
|
}
|
|
|
|
|
2019-12-10 09:26:51 -08:00
|
|
|
function escapeXML(value: string) {
|
|
|
|
return value
|
|
|
|
.replace(/&/g, '&')
|
|
|
|
.replace(/</g, '<')
|
|
|
|
.replace(/>/g, '>')
|
|
|
|
.replace(/"/g, '"')
|
|
|
|
.replace(/'/g, ''');
|
|
|
|
}
|
|
|
|
|
2019-11-15 16:01:13 -08:00
|
|
|
// only exported for testing purposes
|
2019-11-28 12:40:08 -08:00
|
|
|
export function generate(id: string, username: string, password: string) {
|
2019-11-20 10:25:21 -08:00
|
|
|
return `
|
|
|
|
<settings>
|
|
|
|
<servers>
|
|
|
|
<server>
|
2019-12-10 09:26:51 -08:00
|
|
|
<id>${escapeXML(id)}</id>
|
|
|
|
<username>${escapeXML(username)}</username>
|
|
|
|
<password>${escapeXML(password)}</password>
|
2019-11-20 10:25:21 -08:00
|
|
|
</server>
|
|
|
|
</servers>
|
|
|
|
</settings>
|
|
|
|
`;
|
2019-11-15 16:01:13 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
async function write(directory: string, settings: string) {
|
2019-11-20 10:25:21 -08:00
|
|
|
const location = path.join(directory, SETTINGS_FILE);
|
2019-12-19 08:52:26 -08:00
|
|
|
if (fs.existsSync(location)) {
|
|
|
|
console.warn(`overwriting existing file ${location}`);
|
|
|
|
} else {
|
|
|
|
console.log(`writing ${location}`);
|
2019-12-04 23:54:21 -05:00
|
|
|
}
|
2019-12-19 08:52:26 -08:00
|
|
|
|
|
|
|
return fs.writeFileSync(location, settings, {
|
|
|
|
encoding: 'utf-8',
|
|
|
|
flag: 'w'
|
|
|
|
});
|
2019-11-15 16:01:13 -08:00
|
|
|
}
|