motion
Version:
motion - moving development forward
76 lines (65 loc) • 1.7 kB
JavaScript
var path = require("path")
var fs = require("fs")
var netrc = require("netrc")
var os = require("os")
var url = require("url")
var address = require("url-parse-as-address")
module.exports = function(endpoint){
var endpoint = address.parse(endpoint)
var host = endpoint.host
var getFile = function() {
var home = process.env[(/^win/.test(process.platform)) ? 'USERPROFILE' : 'HOME']
return path.join(home, ".netrc")
}
var get = function(){
try {
var obj = netrc(getFile())
}catch(e){
var obj = {}
}
if (process.env['SURGE_LOGIN'] && process.env['SURGE_TOKEN']) {
return {
"email": process.env['SURGE_LOGIN'],
"token": process.env['SURGE_TOKEN']
}
// Fallback to original implementation
} else if (process.env['TRAVIS_SURGE_LOGIN'] && process.env['TRAVIS_SURGE_TOKEN']) {
return {
"email": process.env['TRAVIS_SURGE_LOGIN'],
"token": process.env['TRAVIS_SURGE_TOKEN']
}
}
if (obj.hasOwnProperty(host)) {
return {
"email": obj[host]["login"],
"token": obj[host]["password"]
}
} else {
return null
}
}
var set = function(email, token){
var file = getFile();
try {
var obj = netrc(file)
}catch(e){
var obj = {}
}
if(email === null){
delete obj[host]
fs.writeFileSync(file, netrc.format(obj) + os.EOL)
return null
} else {
obj[host] = {
"login": email,
"password": token
}
fs.writeFileSync(file, netrc.format(obj) + os.EOL)
return get()
}
}
return {
set: set,
get: get
}
}