X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftools%2Fcli.ts;h=6be558d7bb4a1db4c21b9a7be3ab86440803bdf6;hb=1a12f66d631d28a5a58ebbcd274426f2e6e5d203;hp=e83a8a63c64fb0640b0bd811f3d6996738f2d73f;hpb=4913295f9db1a7b814129d90b159a418cb32bb75;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tools/cli.ts b/server/tools/cli.ts index e83a8a63c..6be558d7b 100644 --- a/server/tools/cli.ts +++ b/server/tools/cli.ts @@ -1,5 +1,12 @@ -const config = require('application-config')('PeerTube/CLI') -const netrc = require('netrc-parser').default +import { Netrc } from 'netrc-parser' +import { isTestInstance, getAppNumber } from '../helpers/core-utils' +import { join } from 'path' +import { root } from '../../shared/extra-utils' + +let configName = 'PeerTube/CLI' +if (isTestInstance()) configName += `-${getAppNumber()}` + +const config = require('application-config')(configName) const version = require('../../../package.json').version @@ -12,7 +19,7 @@ function getSettings () { return new Promise((res, rej) => { const defaultSettings = { remotes: [], - default: 0 + default: -1 } config.read((err, data) => { @@ -24,6 +31,12 @@ function getSettings () { } async function getNetrc () { + const Netrc = require('netrc-parser').Netrc + + const netrc = isTestInstance() + ? new Netrc(join(root(), 'test' + getAppNumber(), 'netrc')) + : new Netrc() + await netrc.load() return netrc @@ -31,7 +44,17 @@ async function getNetrc () { function writeSettings (settings) { return new Promise((res, rej) => { - config.write(settings, function (err) { + config.write(settings, err => { + if (err) return rej(err) + + return res() + }) + }) +} + +function deleteSettings () { + return new Promise((res, rej) => { + config.trash((err) => { if (err) return rej(err) return res() @@ -39,9 +62,9 @@ function writeSettings (settings) { }) } -function getRemoteObjectOrDie (program: any, settings: Settings) { +function getRemoteObjectOrDie (program: any, settings: Settings, netrc: Netrc) { if (!program['url'] || !program['username'] || !program['password']) { - // No remote and we don't have program parameters: throw + // No remote and we don't have program parameters: quit if (settings.remotes.length === 0 || Object.keys(netrc.machines).length === 0) { if (!program[ 'url' ]) console.error('--url field is required.') if (!program[ 'username' ]) console.error('--username field is required.') @@ -54,15 +77,12 @@ function getRemoteObjectOrDie (program: any, settings: Settings) { let username: string = program['username'] let password: string = program['password'] - if (!url) { - url = settings.default !== -1 - ? settings.remotes[settings.default] - : settings.remotes[0] - } + if (!url && settings.default !== -1) url = settings.remotes[settings.default] const machine = netrc.machines[url] - if (!username) username = machine.login - if (!password) password = machine.password + + if (!username && machine) username = machine.login + if (!password && machine) password = machine.password return { url, username, password } } @@ -82,5 +102,6 @@ export { getSettings, getNetrc, getRemoteObjectOrDie, - writeSettings + writeSettings, + deleteSettings }