]>
Commit | Line | Data |
---|---|---|
8704acf4 RK |
1 | const config = require('application-config')('PeerTube/CLI') |
2 | const netrc = require('netrc-parser').default | |
3 | ||
499d9015 | 4 | const version = require('../../../package.json').version |
8704acf4 | 5 | |
8704acf4 RK |
6 | interface Settings { |
7 | remotes: any[], | |
8 | default: number | |
9 | } | |
10 | ||
2b4dd7e2 | 11 | function getSettings () { |
8704acf4 | 12 | return new Promise<Settings>((res, rej) => { |
2b4dd7e2 | 13 | const defaultSettings = { |
8704acf4 RK |
14 | remotes: [], |
15 | default: 0 | |
2b4dd7e2 C |
16 | } |
17 | ||
8704acf4 | 18 | config.read((err, data) => { |
2b4dd7e2 C |
19 | if (err) return rej(err) |
20 | ||
21 | return res(Object.keys(data).length === 0 ? defaultSettings : data) | |
8704acf4 RK |
22 | }) |
23 | }) | |
24 | } | |
25 | ||
2b4dd7e2 C |
26 | async function getNetrc () { |
27 | await netrc.load() | |
28 | ||
29 | return netrc | |
30 | } | |
31 | ||
32 | function writeSettings (settings) { | |
8704acf4 RK |
33 | return new Promise((res, rej) => { |
34 | config.write(settings, function (err) { | |
2b4dd7e2 C |
35 | if (err) return rej(err) |
36 | ||
8704acf4 RK |
37 | return res() |
38 | }) | |
39 | }) | |
40 | } | |
41 | ||
2b4dd7e2 C |
42 | function getRemoteObjectOrDie (program: any, settings: Settings) { |
43 | if (!program['url'] || !program['username'] || !program['password']) { | |
44 | // No remote and we don't have program parameters: throw | |
45 | if (settings.remotes.length === 0) { | |
46 | if (!program[ 'url' ]) console.error('--url field is required.') | |
47 | if (!program[ 'username' ]) console.error('--username field is required.') | |
48 | if (!program[ 'password' ]) console.error('--password field is required.') | |
49 | ||
50 | return process.exit(-1) | |
51 | } | |
52 | ||
53 | let url: string = program['url'] | |
54 | let username: string = program['username'] | |
55 | let password: string = program['password'] | |
56 | ||
57 | if (!url) { | |
58 | url = settings.default !== -1 | |
59 | ? settings.remotes[settings.default] | |
60 | : settings.remotes[0] | |
61 | } | |
62 | ||
63 | if (!username) username = netrc.machines[url].login | |
64 | if (!password) password = netrc.machines[url].password | |
65 | ||
66 | return { url, username, password } | |
67 | } | |
68 | ||
69 | return { | |
70 | url: program[ 'url' ], | |
71 | username: program[ 'username' ], | |
72 | password: program[ 'password' ] | |
73 | } | |
74 | } | |
8704acf4 RK |
75 | |
76 | // --------------------------------------------------------------------------- | |
77 | ||
78 | export { | |
79 | version, | |
80 | config, | |
8704acf4 | 81 | getSettings, |
2b4dd7e2 C |
82 | getNetrc, |
83 | getRemoteObjectOrDie, | |
84 | writeSettings | |
8704acf4 | 85 | } |