From 654e1efa2a1dd8997e1ffe3c81458e97846e137c Mon Sep 17 00:00:00 2001 From: Piotr Kruk Date: Thu, 3 Feb 2022 13:44:29 +0100 Subject: [PATCH] Add path argument so we can customize where settings.xml will be stored --- README.md | 3 +++ action.yml | 3 +++ settings.js | 7 ++++++- settings.test.js | 15 +++++++++++++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e32b74e7..1cb47a42 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,9 @@ steps: servers: '[{"id": "serverId", "username": "username", "password": "password"}]' ``` +Also you can use `path` argument if your settings.xml is stored in different location. + + All `server` attributes may be specified: * `id` _(required)_ * `username` diff --git a/action.yml b/action.yml index 416a5fb2..83838fd8 100644 --- a/action.yml +++ b/action.yml @@ -6,6 +6,9 @@ branding: color: 'green' inputs: + path: + description: 'override default path to settings.xml which is $HOME/.m2/settings.xml' + required: false servers: description: 'servers definition in json array, eg: [{"id": "serverId", "username": "username", "password": "password"}]' required: false diff --git a/settings.js b/settings.js index 86be40e7..18ebfdf0 100644 --- a/settings.js +++ b/settings.js @@ -30,7 +30,12 @@ const DOMParser = require('@xmldom/xmldom').DOMParser; const XMLSerializer = require('@xmldom/xmldom').XMLSerializer; function getSettingsPath() { - return path.join(os.homedir(), '.m2', 'settings.xml'); + const _path = core.getInput('path'); + if (!_path) { + return path.join(os.homedir(), '.m2', 'settings.xml'); + } else { + return _path; + } } function getTemplate(templateName) { diff --git a/settings.test.js b/settings.test.js index 41527942..b2e0605d 100644 --- a/settings.test.js +++ b/settings.test.js @@ -689,3 +689,18 @@ test('genereate - override', () => { ]) ); }) + +test('generate - custom path', () => { + + if (!fs.existsSync(testHomePath)) { + fs.mkdirSync(testHomePath); + } + + const mySettings = path.join(testHomePath, 'settings_custom.xml'); + process.env['INPUT_PATH'] = mySettings; + settings.generate(); + + const settingsStatus = fs.lstatSync(mySettings); + expect(settingsStatus.isFile()).toBeTruthy(); + expect(settingsStatus.size).toBeGreaterThan(0); +});