From 313e77d44f84ca347ffa661ce2312aec79290ce4 Mon Sep 17 00:00:00 2001 From: Chad Carbert Date: Fri, 18 Sep 2020 10:05:29 -0400 Subject: [PATCH] feat: add NETRC env var --- src/netrc.ts | 2 +- test/netrc.test.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/netrc.ts b/src/netrc.ts index 010efdf..9cfe998 100644 --- a/src/netrc.ts +++ b/src/netrc.ts @@ -181,7 +181,7 @@ export class Netrc { process.env.USERPROFILE)) || os.homedir() || os.tmpdir() - let file = path.join(home, os.platform() === 'win32' ? '_netrc' : '.netrc') + let file = process.env.NETRC || path.join(home, os.platform() === 'win32' ? '_netrc' : '.netrc') return fs.existsSync(file + '.gpg') ? (file += '.gpg') : file } diff --git a/test/netrc.test.ts b/test/netrc.test.ts index 94e16fa..d715f33 100644 --- a/test/netrc.test.ts +++ b/test/netrc.test.ts @@ -1,5 +1,6 @@ import {expect} from 'chai' import * as fs from 'fs-extra' +import * as path from 'path' import {Netrc} from '../src/netrc' @@ -43,6 +44,21 @@ machine ray login demo password mypassword`, expect(netrc.machines.ray.password).to.equal('mypassword') }) + it('can read netrc via NETRC env var', async () => { + const originalNetrcEnv = process.env.NETRC + process.env.NETRC = path.resolve(__dirname, '../tmp/.netrc') + let netrc = new Netrc() + await netrc.load() + + expect(netrc.machines['mail.google.com'].login).to.equal('joe@gmail.com') + expect(netrc.machines['mail.google.com'].account).to.equal('gmail') + expect(netrc.machines['mail.google.com'].password).to.equal('somethingSecret') + + expect(netrc.machines.ray.login).to.equal('demo') + expect(netrc.machines.ray.password).to.equal('mypassword') + process.env.NETRC = originalNetrcEnv + }) + it('bad default order', () => { const f = 'tmp/netrc' fs.writeFileSync(