Compare commits

...

5 Commits

Author SHA1 Message Date
Jason Karns
95cac31218
Merge 55b7d827be into 0a44ba7841 2024-09-19 21:47:23 +05:30
William Entriken
0a44ba7841
Correct version string (#1124) 2024-09-19 08:53:38 -05:00
Jason Karns
55b7d827be
Refactor and test 2024-05-29 08:52:52 -04:00
Jason Karns
473cb1b506
Make linter happy 2024-05-28 16:13:11 -04:00
Jason Karns
574c6daa52
Spike to default the scope from package.json 2024-05-28 16:13:08 -04:00
3 changed files with 30 additions and 1 deletions

View File

@ -21,7 +21,7 @@ See [action.yml](action.yml)
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
# Version Spec of the version to use in SemVer notation. # Version Spec of the version to use in SemVer notation.
# It also admits such aliases as lts, latest, nightly and canary builds # It also admits such aliases as lts/*, latest, nightly and canary builds
# Examples: 12.x, 10.15.1, >=10.15.0, lts/Hydrogen, 16-nightly, latest, node # Examples: 12.x, 10.15.1, >=10.15.0, lts/Hydrogen, 16-nightly, latest, node
node-version: '' node-version: ''

View File

@ -7,6 +7,7 @@ import * as auth from '../src/authutil';
import * as cacheUtils from '../src/cache-utils'; import * as cacheUtils from '../src/cache-utils';
let rcFile: string; let rcFile: string;
let pkgJson: string;
describe('authutil tests', () => { describe('authutil tests', () => {
const _runnerDir = path.join(__dirname, 'runner'); const _runnerDir = path.join(__dirname, 'runner');
@ -25,10 +26,12 @@ describe('authutil tests', () => {
process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo'; process.env['GITHUB_REPOSITORY'] = 'OwnerName/repo';
process.env['RUNNER_TEMP'] = tempDir; process.env['RUNNER_TEMP'] = tempDir;
rcFile = path.join(tempDir, '.npmrc'); rcFile = path.join(tempDir, '.npmrc');
pkgJson = path.join(tempDir, 'package.json');
}, 100000); }, 100000);
beforeEach(async () => { beforeEach(async () => {
await io.rmRF(rcFile); await io.rmRF(rcFile);
await io.rmRF(pkgJson);
// if (fs.existsSync(rcFile)) { // if (fs.existsSync(rcFile)) {
// fs.unlinkSync(rcFile); // fs.unlinkSync(rcFile);
// } // }
@ -113,6 +116,15 @@ describe('authutil tests', () => {
expect(rc['always-auth']).toBe('false'); expect(rc['always-auth']).toBe('false');
}); });
it('Automatically configures npm scope from package.json', async () => {
process.env['INPUT_SCOPE'] = '';
fs.writeFileSync(pkgJson, '{"name":"@myscope/mypackage"}');
await auth.configAuthentication('https://registry.npmjs.org', '');
const rc = readRcFile(rcFile);
expect(rc['@myscope:registry']).toBe('https://registry.npmjs.org/');
});
it('Sets up npmrc for always-auth true', async () => { it('Sets up npmrc for always-auth true', async () => {
await auth.configAuthentication('https://registry.npmjs.org/', 'true'); await auth.configAuthentication('https://registry.npmjs.org/', 'true');
expect(fs.statSync(rcFile)).toBeDefined(); expect(fs.statSync(rcFile)).toBeDefined();

View File

@ -25,6 +25,12 @@ function writeRegistryToFile(
if (!scope && registryUrl.indexOf('npm.pkg.github.com') > -1) { if (!scope && registryUrl.indexOf('npm.pkg.github.com') > -1) {
scope = github.context.repo.owner; scope = github.context.repo.owner;
} }
if (!scope) {
const namePrefix = packageJson('name')?.match(/^(@[^/]+)\//);
if (namePrefix) {
scope = namePrefix[1];
}
}
if (scope && scope[0] != '@') { if (scope && scope[0] != '@') {
scope = '@' + scope; scope = '@' + scope;
} }
@ -57,3 +63,14 @@ function writeRegistryToFile(
process.env.NODE_AUTH_TOKEN || 'XXXXX-XXXXX-XXXXX-XXXXX' process.env.NODE_AUTH_TOKEN || 'XXXXX-XXXXX-XXXXX-XXXXX'
); );
} }
function packageJson(prop: string){
const pkgPath: string = path.resolve(process.env['RUNNER_TEMP'] || process.cwd(), 'package.json');
try {
const json = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
return prop ? json[prop] : json;
} catch(e) {
core.debug(`Unable to read from package.json`);
}
}