mirror of
				https://github.com/actions/setup-java.git
				synced 2025-11-04 08:20:54 +00:00 
			
		
		
		
	Add overwrite-settings to disable overwriting settings.xml
		
	Closes #79 Refs joschi/setup-jdk#11
This commit is contained in:
		
					parent
					
						
							
								d920b7da5f
							
						
					
				
			
			
				commit
				
					
						41b740659c
					
				
			
		
					 6 changed files with 60 additions and 13 deletions
				
			
		| 
						 | 
					@ -145,7 +145,9 @@ The two `settings.xml` files created from the above example look like the follow
 | 
				
			||||||
</servers>
 | 
					</servers>
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
***NOTE: The `settings.xml` file is created in the Actions $HOME directory. If you have an existing `settings.xml` file at that location, it will be overwritten. See below for using the `settings-path` to change your `settings.xml` file location.***	
 | 
					***NOTE:*** The `settings.xml` file is created in the Actions $HOME directory. If you have an existing `settings.xml` file at that location, it will be overwritten. See below for using the `settings-path` to change your `settings.xml` file location.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you don't want to overwrite the `settings.xml` file, you can set `overwrite-settings: false`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See the help docs on [Publishing a Package](https://help.github.com/en/github/managing-packages-with-github-packages/configuring-apache-maven-for-use-with-github-packages#publishing-a-package) for more information on the `pom.xml` file.
 | 
					See the help docs on [Publishing a Package](https://help.github.com/en/github/managing-packages-with-github-packages/configuring-apache-maven-for-use-with-github-packages#publishing-a-package) for more information on the `pom.xml` file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -86,6 +86,23 @@ describe('auth tests', () => {
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }, 100000);
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('does not overwrite existing settings.xml files', async () => {
 | 
				
			||||||
 | 
					    const id = 'packages';
 | 
				
			||||||
 | 
					    const username = 'USERNAME';
 | 
				
			||||||
 | 
					    const password = 'PASSWORD';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fs.mkdirSync(m2Dir, {recursive: true});
 | 
				
			||||||
 | 
					    fs.writeFileSync(settingsFile, 'FAKE FILE');
 | 
				
			||||||
 | 
					    expect(fs.existsSync(m2Dir)).toBe(true);
 | 
				
			||||||
 | 
					    expect(fs.existsSync(settingsFile)).toBe(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    await auth.configAuthentication(id, username, password, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(fs.existsSync(m2Dir)).toBe(true);
 | 
				
			||||||
 | 
					    expect(fs.existsSync(settingsFile)).toBe(true);
 | 
				
			||||||
 | 
					    expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual('FAKE FILE');
 | 
				
			||||||
 | 
					  }, 100000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('does not create settings.xml without required parameters', async () => {
 | 
					  it('does not create settings.xml without required parameters', async () => {
 | 
				
			||||||
    await auth.configAuthentication('FOO');
 | 
					    await auth.configAuthentication('FOO');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -94,6 +111,7 @@ describe('auth tests', () => {
 | 
				
			||||||
    expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(
 | 
					    expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(
 | 
				
			||||||
      auth.generate('FOO', auth.DEFAULT_USERNAME, auth.DEFAULT_PASSWORD)
 | 
					      auth.generate('FOO', auth.DEFAULT_USERNAME, auth.DEFAULT_PASSWORD)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					    fs.unlinkSync(settingsFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await auth.configAuthentication(undefined, 'BAR', undefined);
 | 
					    await auth.configAuthentication(undefined, 'BAR', undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,6 +120,7 @@ describe('auth tests', () => {
 | 
				
			||||||
    expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(
 | 
					    expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(
 | 
				
			||||||
      auth.generate(auth.DEFAULT_ID, 'BAR', auth.DEFAULT_PASSWORD)
 | 
					      auth.generate(auth.DEFAULT_ID, 'BAR', auth.DEFAULT_PASSWORD)
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					    fs.unlinkSync(settingsFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await auth.configAuthentication(undefined, undefined, 'BAZ');
 | 
					    await auth.configAuthentication(undefined, undefined, 'BAZ');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -110,6 +129,7 @@ describe('auth tests', () => {
 | 
				
			||||||
    expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(
 | 
					    expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(
 | 
				
			||||||
      auth.generate(auth.DEFAULT_ID, auth.DEFAULT_USERNAME, 'BAZ')
 | 
					      auth.generate(auth.DEFAULT_ID, auth.DEFAULT_USERNAME, 'BAZ')
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					    fs.unlinkSync(settingsFile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await auth.configAuthentication();
 | 
					    await auth.configAuthentication();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,9 @@ inputs:
 | 
				
			||||||
  settings-path:
 | 
					  settings-path:
 | 
				
			||||||
    description: 'Path to where the settings.xml file will be written. Default is ~/.m2.'
 | 
					    description: 'Path to where the settings.xml file will be written. Default is ~/.m2.'
 | 
				
			||||||
    required: false
 | 
					    required: false
 | 
				
			||||||
 | 
					  overwrite-settings:
 | 
				
			||||||
 | 
					    description: 'Overwrite the settings.xml file if it exists. Default is "true".'
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
outputs:
 | 
					outputs:
 | 
				
			||||||
  path:
 | 
					  path:
 | 
				
			||||||
    description: 'Path to where the java environment has been installed (same as $JAVA_HOME)'
 | 
					    description: 'Path to where the java environment has been installed (same as $JAVA_HOME)'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								dist/index.js
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								dist/index.js
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
					@ -2884,7 +2884,7 @@ exports.SETTINGS_FILE = 'settings.xml';
 | 
				
			||||||
exports.DEFAULT_ID = 'github';
 | 
					exports.DEFAULT_ID = 'github';
 | 
				
			||||||
exports.DEFAULT_USERNAME = 'GITHUB_ACTOR';
 | 
					exports.DEFAULT_USERNAME = 'GITHUB_ACTOR';
 | 
				
			||||||
exports.DEFAULT_PASSWORD = 'GITHUB_TOKEN';
 | 
					exports.DEFAULT_PASSWORD = 'GITHUB_TOKEN';
 | 
				
			||||||
function configAuthentication(id = exports.DEFAULT_ID, username = exports.DEFAULT_USERNAME, password = exports.DEFAULT_PASSWORD) {
 | 
					function configAuthentication(id = exports.DEFAULT_ID, username = exports.DEFAULT_USERNAME, password = exports.DEFAULT_PASSWORD, overwriteSettings = true) {
 | 
				
			||||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
					    return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
        console.log(`creating ${exports.SETTINGS_FILE} with server-id: ${id};`, `environment variables: username=\$${username} and password=\$${password}`);
 | 
					        console.log(`creating ${exports.SETTINGS_FILE} with server-id: ${id};`, `environment variables: username=\$${username} and password=\$${password}`);
 | 
				
			||||||
        // when an alternate m2 location is specified use only that location (no .m2 directory)
 | 
					        // when an alternate m2 location is specified use only that location (no .m2 directory)
 | 
				
			||||||
| 
						 | 
					@ -2892,7 +2892,7 @@ function configAuthentication(id = exports.DEFAULT_ID, username = exports.DEFAUL
 | 
				
			||||||
        const directory = path.join(core.getInput('settings-path') || os.homedir(), core.getInput('settings-path') ? '' : exports.M2_DIR);
 | 
					        const directory = path.join(core.getInput('settings-path') || os.homedir(), core.getInput('settings-path') ? '' : exports.M2_DIR);
 | 
				
			||||||
        yield io.mkdirP(directory);
 | 
					        yield io.mkdirP(directory);
 | 
				
			||||||
        core.debug(`created directory ${directory}`);
 | 
					        core.debug(`created directory ${directory}`);
 | 
				
			||||||
        yield write(directory, generate(id, username, password));
 | 
					        yield write(directory, generate(id, username, password), overwriteSettings);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
exports.configAuthentication = configAuthentication;
 | 
					exports.configAuthentication = configAuthentication;
 | 
				
			||||||
| 
						 | 
					@ -2919,15 +2919,20 @@ function generate(id = exports.DEFAULT_ID, username = exports.DEFAULT_USERNAME,
 | 
				
			||||||
  `;
 | 
					  `;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
exports.generate = generate;
 | 
					exports.generate = generate;
 | 
				
			||||||
function write(directory, settings) {
 | 
					function write(directory, settings, overwriteSettings) {
 | 
				
			||||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
					    return __awaiter(this, void 0, void 0, function* () {
 | 
				
			||||||
        const location = path.join(directory, exports.SETTINGS_FILE);
 | 
					        const location = path.join(directory, exports.SETTINGS_FILE);
 | 
				
			||||||
        if (fs.existsSync(location)) {
 | 
					        const exists = fs.existsSync(location);
 | 
				
			||||||
 | 
					        if (exists && overwriteSettings) {
 | 
				
			||||||
            console.warn(`overwriting existing file ${location}`);
 | 
					            console.warn(`overwriting existing file ${location}`);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else if (!exists) {
 | 
				
			||||||
            console.log(`writing ${location}`);
 | 
					            console.log(`writing ${location}`);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            console.log(`not overwriting existing file ${location}`);
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        return fs.writeFileSync(location, settings, {
 | 
					        return fs.writeFileSync(location, settings, {
 | 
				
			||||||
            encoding: 'utf-8',
 | 
					            encoding: 'utf-8',
 | 
				
			||||||
            flag: 'w'
 | 
					            flag: 'w'
 | 
				
			||||||
| 
						 | 
					@ -4594,7 +4599,8 @@ function run() {
 | 
				
			||||||
            const id = core.getInput('server-id', { required: false }) || undefined;
 | 
					            const id = core.getInput('server-id', { required: false }) || undefined;
 | 
				
			||||||
            const username = core.getInput('server-username', { required: false }) || undefined;
 | 
					            const username = core.getInput('server-username', { required: false }) || undefined;
 | 
				
			||||||
            const password = core.getInput('server-password', { required: false }) || undefined;
 | 
					            const password = core.getInput('server-password', { required: false }) || undefined;
 | 
				
			||||||
            yield auth.configAuthentication(id, username, password);
 | 
					            const overwriteSettings = core.getInput('overwrite-settings', { required: false }) || 'true';
 | 
				
			||||||
 | 
					            yield auth.configAuthentication(id, username, password, overwriteSettings === 'true');
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        catch (error) {
 | 
					        catch (error) {
 | 
				
			||||||
            core.setFailed(error.message);
 | 
					            core.setFailed(error.message);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										19
									
								
								src/auth.ts
									
										
									
									
									
								
							
							
						
						
									
										19
									
								
								src/auth.ts
									
										
									
									
									
								
							| 
						 | 
					@ -14,7 +14,8 @@ export const DEFAULT_PASSWORD = 'GITHUB_TOKEN';
 | 
				
			||||||
export async function configAuthentication(
 | 
					export async function configAuthentication(
 | 
				
			||||||
  id = DEFAULT_ID,
 | 
					  id = DEFAULT_ID,
 | 
				
			||||||
  username = DEFAULT_USERNAME,
 | 
					  username = DEFAULT_USERNAME,
 | 
				
			||||||
  password = DEFAULT_PASSWORD
 | 
					  password = DEFAULT_PASSWORD,
 | 
				
			||||||
 | 
					  overwriteSettings = true
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
  console.log(
 | 
					  console.log(
 | 
				
			||||||
    `creating ${SETTINGS_FILE} with server-id: ${id};`,
 | 
					    `creating ${SETTINGS_FILE} with server-id: ${id};`,
 | 
				
			||||||
| 
						 | 
					@ -28,7 +29,7 @@ export async function configAuthentication(
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
  await io.mkdirP(directory);
 | 
					  await io.mkdirP(directory);
 | 
				
			||||||
  core.debug(`created directory ${directory}`);
 | 
					  core.debug(`created directory ${directory}`);
 | 
				
			||||||
  await write(directory, generate(id, username, password));
 | 
					  await write(directory, generate(id, username, password), overwriteSettings);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function escapeXML(value: string) {
 | 
					function escapeXML(value: string) {
 | 
				
			||||||
| 
						 | 
					@ -59,12 +60,20 @@ export function generate(
 | 
				
			||||||
  `;
 | 
					  `;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function write(directory: string, settings: string) {
 | 
					async function write(
 | 
				
			||||||
 | 
					  directory: string,
 | 
				
			||||||
 | 
					  settings: string,
 | 
				
			||||||
 | 
					  overwriteSettings: boolean
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
  const location = path.join(directory, SETTINGS_FILE);
 | 
					  const location = path.join(directory, SETTINGS_FILE);
 | 
				
			||||||
  if (fs.existsSync(location)) {
 | 
					  const exists = fs.existsSync(location);
 | 
				
			||||||
 | 
					  if (exists && overwriteSettings) {
 | 
				
			||||||
    console.warn(`overwriting existing file ${location}`);
 | 
					    console.warn(`overwriting existing file ${location}`);
 | 
				
			||||||
  } else {
 | 
					  } else if (!exists) {
 | 
				
			||||||
    console.log(`writing ${location}`);
 | 
					    console.log(`writing ${location}`);
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    console.log(`not overwriting existing file ${location}`);
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return fs.writeFileSync(location, settings, {
 | 
					  return fs.writeFileSync(location, settings, {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,8 +23,15 @@ async function run() {
 | 
				
			||||||
      core.getInput('server-username', {required: false}) || undefined;
 | 
					      core.getInput('server-username', {required: false}) || undefined;
 | 
				
			||||||
    const password =
 | 
					    const password =
 | 
				
			||||||
      core.getInput('server-password', {required: false}) || undefined;
 | 
					      core.getInput('server-password', {required: false}) || undefined;
 | 
				
			||||||
 | 
					    const overwriteSettings =
 | 
				
			||||||
 | 
					      core.getInput('overwrite-settings', {required: false}) || 'true';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await auth.configAuthentication(id, username, password);
 | 
					    await auth.configAuthentication(
 | 
				
			||||||
 | 
					      id,
 | 
				
			||||||
 | 
					      username,
 | 
				
			||||||
 | 
					      password,
 | 
				
			||||||
 | 
					      overwriteSettings === 'true'
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
  } catch (error) {
 | 
					  } catch (error) {
 | 
				
			||||||
    core.setFailed(error.message);
 | 
					    core.setFailed(error.message);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue